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 that described in the format (e.g. D16 must: not be 1775implemented as 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 1796| 8-bit + 1797 Block size 1 byte + 1798 1 texel/block 1799 | ename:VK_FORMAT_R4G4_UNORM_PACK8, + 1800 ename:VK_FORMAT_R8_UNORM, + 1801 ename:VK_FORMAT_R8_SNORM, + 1802 ename:VK_FORMAT_R8_USCALED, + 1803 ename:VK_FORMAT_R8_SSCALED, + 1804 ename:VK_FORMAT_R8_UINT, + 1805 ename:VK_FORMAT_R8_SINT, + 1806 ename:VK_FORMAT_R8_SRGB 1807| 16-bit + 1808 Block size 2 bytes + 1809 1 texel/block 1810 | ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16, + 1811 ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16, + 1812ifdef::VK_EXT_4444_formats[] 1813 ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, + 1814 ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, + 1815endif::VK_EXT_4444_formats[] 1816 ename:VK_FORMAT_R5G6B5_UNORM_PACK16, + 1817 ename:VK_FORMAT_B5G6R5_UNORM_PACK16, + 1818 ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16, + 1819 ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16, + 1820 ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16, + 1821 ename:VK_FORMAT_R8G8_UNORM, + 1822 ename:VK_FORMAT_R8G8_SNORM, + 1823 ename:VK_FORMAT_R8G8_USCALED, + 1824 ename:VK_FORMAT_R8G8_SSCALED, + 1825 ename:VK_FORMAT_R8G8_UINT, + 1826 ename:VK_FORMAT_R8G8_SINT, + 1827 ename:VK_FORMAT_R8G8_SRGB, + 1828 ename:VK_FORMAT_R16_UNORM, + 1829 ename:VK_FORMAT_R16_SNORM, + 1830 ename:VK_FORMAT_R16_USCALED, + 1831 ename:VK_FORMAT_R16_SSCALED, + 1832 ename:VK_FORMAT_R16_UINT, + 1833 ename:VK_FORMAT_R16_SINT, + 1834ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1835 ename:VK_FORMAT_R16_SFLOAT 1836endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1837ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1838 ename:VK_FORMAT_R16_SFLOAT, + 1839 ename:VK_FORMAT_R10X6_UNORM_PACK16, + 1840 ename:VK_FORMAT_R12X4_UNORM_PACK16 1841endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1842| 24-bit + 1843 Block size 3 bytes + 1844 1 texel/block 1845 | ename:VK_FORMAT_R8G8B8_UNORM, + 1846 ename:VK_FORMAT_R8G8B8_SNORM, + 1847 ename:VK_FORMAT_R8G8B8_USCALED, + 1848 ename:VK_FORMAT_R8G8B8_SSCALED, + 1849 ename:VK_FORMAT_R8G8B8_UINT, + 1850 ename:VK_FORMAT_R8G8B8_SINT, + 1851 ename:VK_FORMAT_R8G8B8_SRGB, + 1852 ename:VK_FORMAT_B8G8R8_UNORM, + 1853 ename:VK_FORMAT_B8G8R8_SNORM, + 1854 ename:VK_FORMAT_B8G8R8_USCALED, + 1855 ename:VK_FORMAT_B8G8R8_SSCALED, + 1856 ename:VK_FORMAT_B8G8R8_UINT, + 1857 ename:VK_FORMAT_B8G8R8_SINT, + 1858 ename:VK_FORMAT_B8G8R8_SRGB 1859| 32-bit + 1860 Block size 4 bytes + 1861 1 texel/block 1862 | ename:VK_FORMAT_R8G8B8A8_UNORM, + 1863 ename:VK_FORMAT_R8G8B8A8_SNORM, + 1864 ename:VK_FORMAT_R8G8B8A8_USCALED, + 1865 ename:VK_FORMAT_R8G8B8A8_SSCALED, + 1866 ename:VK_FORMAT_R8G8B8A8_UINT, + 1867 ename:VK_FORMAT_R8G8B8A8_SINT, + 1868 ename:VK_FORMAT_R8G8B8A8_SRGB, + 1869 ename:VK_FORMAT_B8G8R8A8_UNORM, + 1870 ename:VK_FORMAT_B8G8R8A8_SNORM, + 1871 ename:VK_FORMAT_B8G8R8A8_USCALED, + 1872 ename:VK_FORMAT_B8G8R8A8_SSCALED, + 1873 ename:VK_FORMAT_B8G8R8A8_UINT, + 1874 ename:VK_FORMAT_B8G8R8A8_SINT, + 1875 ename:VK_FORMAT_B8G8R8A8_SRGB, + 1876 ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32, + 1877 ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32, + 1878 ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32, + 1879 ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32, + 1880 ename:VK_FORMAT_A8B8G8R8_UINT_PACK32, + 1881 ename:VK_FORMAT_A8B8G8R8_SINT_PACK32, + 1882 ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32, + 1883 ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32, + 1884 ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32, + 1885 ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32, + 1886 ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32, + 1887 ename:VK_FORMAT_A2R10G10B10_UINT_PACK32, + 1888 ename:VK_FORMAT_A2R10G10B10_SINT_PACK32, + 1889 ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32, + 1890 ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32, + 1891 ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32, + 1892 ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32, + 1893 ename:VK_FORMAT_A2B10G10R10_UINT_PACK32, + 1894 ename:VK_FORMAT_A2B10G10R10_SINT_PACK32, + 1895 ename:VK_FORMAT_R16G16_UNORM, + 1896 ename:VK_FORMAT_R16G16_SNORM, + 1897 ename:VK_FORMAT_R16G16_USCALED, + 1898 ename:VK_FORMAT_R16G16_SSCALED, + 1899 ename:VK_FORMAT_R16G16_UINT, + 1900 ename:VK_FORMAT_R16G16_SINT, + 1901 ename:VK_FORMAT_R16G16_SFLOAT, + 1902 ename:VK_FORMAT_R32_UINT, + 1903 ename:VK_FORMAT_R32_SINT, + 1904 ename:VK_FORMAT_R32_SFLOAT, + 1905 ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32, + 1906ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1907 ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 1908endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1909ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1910 ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + 1911 ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + 1912 ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 1913| 32-bit G8B8G8R8 + 1914 Block size 4 bytes + 1915 1 texel/block 1916 | ename:VK_FORMAT_G8B8G8R8_422_UNORM 1917| 32-bit B8G8R8G8 + 1918 Block size 4 bytes + 1919 1 texel/block 1920 | ename:VK_FORMAT_B8G8R8G8_422_UNORM 1921endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1922| 48-bit + 1923 Block size 6 bytes + 1924 1 texel/block 1925 | ename:VK_FORMAT_R16G16B16_UNORM, + 1926 ename:VK_FORMAT_R16G16B16_SNORM, + 1927 ename:VK_FORMAT_R16G16B16_USCALED, + 1928 ename:VK_FORMAT_R16G16B16_SSCALED, + 1929 ename:VK_FORMAT_R16G16B16_UINT, + 1930 ename:VK_FORMAT_R16G16B16_SINT, + 1931 ename:VK_FORMAT_R16G16B16_SFLOAT 1932| 64-bit + 1933 Block size 8 bytes + 1934 1 texel/block 1935 | ename:VK_FORMAT_R16G16B16A16_UNORM, + 1936 ename:VK_FORMAT_R16G16B16A16_SNORM, + 1937 ename:VK_FORMAT_R16G16B16A16_USCALED, + 1938 ename:VK_FORMAT_R16G16B16A16_SSCALED, + 1939 ename:VK_FORMAT_R16G16B16A16_UINT, + 1940 ename:VK_FORMAT_R16G16B16A16_SINT, + 1941 ename:VK_FORMAT_R16G16B16A16_SFLOAT, + 1942 ename:VK_FORMAT_R32G32_UINT, + 1943 ename:VK_FORMAT_R32G32_SINT, + 1944 ename:VK_FORMAT_R32G32_SFLOAT, + 1945 ename:VK_FORMAT_R64_UINT, + 1946 ename:VK_FORMAT_R64_SINT, + 1947 ename:VK_FORMAT_R64_SFLOAT 1948ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1949| 64-bit R10G10B10A10 + 1950 Block size 8 bytes + 1951 1 texel/block 1952 | ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 1953| 64-bit G10B10G10R10 + 1954 Block size 8 bytes + 1955 1 texel/block 1956 | ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 1957| 64-bit B10G10R10G10 + 1958 Block size 8 bytes + 1959 1 texel/block 1960 | ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 1961| 64-bit R12G12B12A12 + 1962 Block size 8 bytes + 1963 1 texel/block 1964 | ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 1965| 64-bit G12B12G12R12 + 1966 Block size 8 bytes + 1967 1 texel/block 1968 | ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 1969| 64-bit B12G12R12G12 + 1970 Block size 8 bytes + 1971 1 texel/block 1972 | ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 1973| 64-bit G16B16G16R16 + 1974 Block size 8 bytes + 1975 1 texel/block 1976 | ename:VK_FORMAT_G16B16G16R16_422_UNORM 1977| 64-bit B16G16R16G16 + 1978 Block size 8 bytes + 1979 1 texel/block 1980 | ename:VK_FORMAT_B16G16R16G16_422_UNORM 1981endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1982| 96-bit + 1983 Block size 12 bytes + 1984 1 texel/block 1985 | ename:VK_FORMAT_R32G32B32_UINT, + 1986 ename:VK_FORMAT_R32G32B32_SINT, + 1987 ename:VK_FORMAT_R32G32B32_SFLOAT 1988| 128-bit + 1989 Block size 16 bytes + 1990 1 texel/block 1991 | ename:VK_FORMAT_R32G32B32A32_UINT, + 1992 ename:VK_FORMAT_R32G32B32A32_SINT, + 1993 ename:VK_FORMAT_R32G32B32A32_SFLOAT, + 1994 ename:VK_FORMAT_R64G64_UINT, + 1995 ename:VK_FORMAT_R64G64_SINT, + 1996 ename:VK_FORMAT_R64G64_SFLOAT 1997| 192-bit + 1998 Block size 24 bytes + 1999 1 texel/block 2000 | ename:VK_FORMAT_R64G64B64_UINT, + 2001 ename:VK_FORMAT_R64G64B64_SINT, + 2002 ename:VK_FORMAT_R64G64B64_SFLOAT 2003| 256-bit + 2004 Block size 32 bytes + 2005 1 texel/block 2006 | ename:VK_FORMAT_R64G64B64A64_UINT, + 2007 ename:VK_FORMAT_R64G64B64A64_SINT, + 2008 ename:VK_FORMAT_R64G64B64A64_SFLOAT 2009| BC1_RGB (64 bit) + 2010 Block size 8 bytes + 2011 16 texels/block 2012 | ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK, + 2013 ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK 2014| BC1_RGBA (64 bit) + 2015 Block size 8 bytes + 2016 16 texels/block 2017 | ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK, + 2018 ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK 2019| BC2 (128 bit) + 2020 Block size 16 bytes + 2021 16 texels/block 2022 | ename:VK_FORMAT_BC2_UNORM_BLOCK, + 2023 ename:VK_FORMAT_BC2_SRGB_BLOCK 2024| BC3 (128 bit) + 2025 Block size 16 bytes + 2026 16 texels/block 2027 | ename:VK_FORMAT_BC3_UNORM_BLOCK, + 2028 ename:VK_FORMAT_BC3_SRGB_BLOCK 2029| BC4 (64 bit) + 2030 Block size 8 bytes + 2031 16 texels/block 2032 | ename:VK_FORMAT_BC4_UNORM_BLOCK, + 2033 ename:VK_FORMAT_BC4_SNORM_BLOCK 2034| BC5 (128 bit) + 2035 Block size 16 bytes + 2036 16 texels/block 2037 | ename:VK_FORMAT_BC5_UNORM_BLOCK, + 2038 ename:VK_FORMAT_BC5_SNORM_BLOCK 2039| BC6H (128 bit) + 2040 Block size 16 bytes + 2041 16 texels/block 2042 | ename:VK_FORMAT_BC6H_UFLOAT_BLOCK, + 2043 ename:VK_FORMAT_BC6H_SFLOAT_BLOCK 2044| BC7 (128 bit) + 2045 Block size 16 bytes + 2046 16 texels/block 2047 | ename:VK_FORMAT_BC7_UNORM_BLOCK, + 2048 ename:VK_FORMAT_BC7_SRGB_BLOCK 2049| ETC2_RGB (64 bit) + 2050 Block size 8 bytes + 2051 16 texels/block 2052 | ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + 2053 ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK 2054| ETC2_RGBA (64 bit) + 2055 Block size 8 bytes + 2056 16 texels/block 2057 | ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + 2058 ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK 2059| ETC2_EAC_RGBA (64 bit) + 2060 Block size 8 bytes + 2061 16 texels/block 2062 | ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + 2063 ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK 2064| EAC_R (64 bit) + 2065 Block size 8 bytes + 2066 16 texels/block 2067 | ename:VK_FORMAT_EAC_R11_UNORM_BLOCK, + 2068 ename:VK_FORMAT_EAC_R11_SNORM_BLOCK 2069| EAC_RG (128 bit) + 2070 Block size 16 bytes + 2071 16 texels/block 2072 | ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + 2073 ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK 2074| ASTC_4x4 (128 bit) + 2075 Block size 16 bytes + 2076 16 texels/block 2077 | ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + 2078ifdef::VK_EXT_texture_compression_astc_hdr[] 2079 ename:VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, + 2080endif::VK_EXT_texture_compression_astc_hdr[] 2081 ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK 2082| ASTC_5x4 (128 bit) + 2083 Block size 16 bytes + 2084 20 texels/block 2085 | ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK, + 2086ifdef::VK_EXT_texture_compression_astc_hdr[] 2087 ename:VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, + 2088endif::VK_EXT_texture_compression_astc_hdr[] 2089 ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK 2090| ASTC_5x5 (128 bit) + 2091 Block size 16 bytes + 2092 25 texels/block 2093 | ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK, + 2094ifdef::VK_EXT_texture_compression_astc_hdr[] 2095 ename:VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, + 2096endif::VK_EXT_texture_compression_astc_hdr[] 2097 ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK 2098| ASTC_6x5 (128 bit) + 2099 Block size 16 bytes + 2100 30 texels/block 2101 | ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + 2102ifdef::VK_EXT_texture_compression_astc_hdr[] 2103 ename:VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, + 2104endif::VK_EXT_texture_compression_astc_hdr[] 2105 ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK 2106| ASTC_6x6 (128 bit) + 2107 Block size 16 bytes + 2108 36 texels/block 2109 | ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK, + 2110ifdef::VK_EXT_texture_compression_astc_hdr[] 2111 ename:VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, + 2112endif::VK_EXT_texture_compression_astc_hdr[] 2113 ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK 2114| ASTC_8x5 (128 bit) + 2115 Block size 16 bytes + 2116 40 texels/block 2117 | ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK, + 2118ifdef::VK_EXT_texture_compression_astc_hdr[] 2119 ename:VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, + 2120endif::VK_EXT_texture_compression_astc_hdr[] 2121 ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK 2122| ASTC_8x6 (128 bit) + 2123 Block size 16 bytes + 2124 48 texels/block 2125 | ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + 2126ifdef::VK_EXT_texture_compression_astc_hdr[] 2127 ename:VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, + 2128endif::VK_EXT_texture_compression_astc_hdr[] 2129 ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK 2130| ASTC_8x8 (128 bit) + 2131 Block size 16 bytes + 2132 64 texels/block 2133 | ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK, + 2134ifdef::VK_EXT_texture_compression_astc_hdr[] 2135 ename:VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, + 2136endif::VK_EXT_texture_compression_astc_hdr[] 2137 ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK 2138| ASTC_10x5 (128 bit) + 2139 Block size 16 bytes + 2140 50 texels/block 2141 | ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK, + 2142ifdef::VK_EXT_texture_compression_astc_hdr[] 2143 ename:VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, + 2144endif::VK_EXT_texture_compression_astc_hdr[] 2145 ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK 2146| ASTC_10x6 (128 bit) + 2147 Block size 16 bytes + 2148 60 texels/block 2149 | ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + 2150ifdef::VK_EXT_texture_compression_astc_hdr[] 2151 ename:VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, + 2152endif::VK_EXT_texture_compression_astc_hdr[] 2153 ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK 2154| ASTC_10x8 (128 bit) + 2155 Block size 16 bytes + 2156 80 texels/block 2157 | ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK, + 2158ifdef::VK_EXT_texture_compression_astc_hdr[] 2159 ename:VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, + 2160endif::VK_EXT_texture_compression_astc_hdr[] 2161 ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK 2162| ASTC_10x10 (128 bit) + 2163 Block size 16 bytes + 2164 100 texels/block 2165 | ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK, + 2166ifdef::VK_EXT_texture_compression_astc_hdr[] 2167 ename:VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, + 2168endif::VK_EXT_texture_compression_astc_hdr[] 2169 ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK 2170| ASTC_12x10 (128 bit) + 2171 Block size 16 bytes + 2172 120 texels/block 2173 | ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + 2174ifdef::VK_EXT_texture_compression_astc_hdr[] 2175 ename:VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, + 2176endif::VK_EXT_texture_compression_astc_hdr[] 2177 ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK 2178| ASTC_12x12 (128 bit) + 2179 Block size 16 bytes + 2180 144 texels/block 2181 | ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK, + 2182ifdef::VK_EXT_texture_compression_astc_hdr[] 2183 ename:VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, + 2184endif::VK_EXT_texture_compression_astc_hdr[] 2185 ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK 2186| D16 (16 bit) + 2187 Block size 2 bytes + 2188 1 texel/block 2189 | ename:VK_FORMAT_D16_UNORM 2190| D24 (32 bit) + 2191 Block size 4 bytes + 2192 1 texel/block 2193 | ename:VK_FORMAT_X8_D24_UNORM_PACK32 2194| D32 (32 bit) + 2195 Block size 4 bytes + 2196 1 texel/block 2197 | ename:VK_FORMAT_D32_SFLOAT 2198| S8 (8 bit) + 2199 Block size 1 byte + 2200 1 texel/block 2201 | ename:VK_FORMAT_S8_UINT 2202| D16S8 (24 bit) + 2203 Block size 3 bytes + 2204 1 texel/block 2205 | ename:VK_FORMAT_D16_UNORM_S8_UINT 2206| D24S8 (32 bit) + 2207 Block size 4 bytes + 2208 1 texel/block 2209 | ename:VK_FORMAT_D24_UNORM_S8_UINT 2210| D32S8 (40 bit) + 2211 Block size 5 bytes + 2212 1 texel/block 2213 | ename:VK_FORMAT_D32_SFLOAT_S8_UINT 2214ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2215| 8-bit 3-plane 420 + 2216 Block size (1,1,1) bytes + 2217 1 texel/block 2218 | ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM 2219| 8-bit 2-plane 420 + 2220 Block size (1,2) bytes + 2221 1 texel/block 2222 | ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM 2223| 8-bit 3-plane 422 + 2224 Block size (1,1,1) bytes + 2225 1 texel/block 2226 | ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM 2227| 8-bit 2-plane 422 + 2228 Block size (1,2) bytes + 2229 1 texel/block 2230 | ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM 2231| 8-bit 3-plane 444 + 2232 Block size (1,1,1) bytes + 2233 1 texel/block 2234 | ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM 2235| 10-bit 3-plane 420 + 2236 Block size (2,2,2) bytes + 2237 1 texel/block 2238 | ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 2239| 10-bit 2-plane 420 + 2240 Block size (2,4) bytes + 2241 1 texel/block 2242 | ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 2243| 10-bit 3-plane 422 + 2244 Block size (2,2,2) bytes + 2245 1 texel/block 2246 | ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 2247| 10-bit 2-plane 422 + 2248 Block size (2,2) bytes + 2249 1 texel/block 2250 | ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 2251| 10-bit 3-plane 444 + 2252 Block size (2,2,2) bytes + 2253 1 texel/block 2254 | ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 2255| 12-bit 3-plane 420 + 2256 Block size (2,2,2) bytes + 2257 1 texel/block 2258 | ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 2259| 12-bit 2-plane 420 + 2260 Block size (2,4) bytes + 2261 1 texel/block 2262 | ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 2263| 12-bit 3-plane 422 + 2264 Block size (2,2,2) bytes + 2265 1 texel/block 2266 | ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 2267| 12-bit 2-plane 422 + 2268 Block size (2,4) bytes + 2269 1 texel/block 2270 | ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 2271| 12-bit 3-plane 444 + 2272 Block size (2,2,2) bytes + 2273 1 texel/block 2274 | ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 2275| 16-bit 3-plane 420 + 2276 Block size (2,2,2) bytes + 2277 1 texel/block 2278 | ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM 2279| 16-bit 2-plane 420 + 2280 Block size (2,4) bytes + 2281 1 texel/block 2282 | ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM 2283| 16-bit 3-plane 422 + 2284 Block size (2,2,2) bytes + 2285 1 texel/block 2286 | ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM 2287| 16-bit 2-plane 422 + 2288 Block size (2,4) bytes + 2289 1 texel/block 2290 | ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM 2291| 16-bit 3-plane 444 + 2292 Block size (2,2,2) bytes + 2293 1 texel/block 2294 | ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM 2295ifdef::VK_EXT_ycbcr_2plane_444_formats[] 2296| 8-bit 2-plane 444 + 2297 Block size (1,2) bytes + 2298 1 texel/block 2299 | ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT 2300| 10-bit 2-plane 444 + 2301 Block size (2,4) bytes + 2302 1 texel/block 2303 | ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT 2304| 12-bit 2-plane 444 + 2305 Block size (2,4) bytes + 2306 1 texel/block 2307 | ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT 2308| 16-bit 2-plane 444 + 2309 Block size (2,4) bytes + 2310 1 texel/block 2311 | ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT 2312endif::VK_EXT_ycbcr_2plane_444_formats[] 2313 2314endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2315|==== 2316 2317 2318[[formats-properties]] 2319== Format Properties 2320 2321[open,refpage='vkGetPhysicalDeviceFormatProperties',desc='Lists physical device\'s format capabilities',type='protos'] 2322-- 2323To query supported format features which are properties of the physical 2324device, call: 2325 2326include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties.txt[] 2327 2328 * pname:physicalDevice is the physical device from which to query the 2329 format properties. 2330 * pname:format is the format whose properties are queried. 2331 * pname:pFormatProperties is a pointer to a slink:VkFormatProperties 2332 structure in which physical device properties for pname:format are 2333 returned. 2334 2335include::{generated}/validity/protos/vkGetPhysicalDeviceFormatProperties.txt[] 2336-- 2337 2338[open,refpage='VkFormatProperties',desc='Structure specifying image format properties',type='structs'] 2339-- 2340The sname:VkFormatProperties structure is defined as: 2341 2342include::{generated}/api/structs/VkFormatProperties.txt[] 2343 2344 * pname:linearTilingFeatures is a bitmask of elink:VkFormatFeatureFlagBits 2345 specifying features supported by images created with a pname:tiling 2346 parameter of ename:VK_IMAGE_TILING_LINEAR. 2347 * pname:optimalTilingFeatures is a bitmask of 2348 elink:VkFormatFeatureFlagBits specifying features supported by images 2349 created with a pname:tiling parameter of ename:VK_IMAGE_TILING_OPTIMAL. 2350 * pname:bufferFeatures is a bitmask of elink:VkFormatFeatureFlagBits 2351 specifying features supported by buffers. 2352 2353[NOTE] 2354.Note 2355==== 2356ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2357If no format feature flags are supported, then the only possible use would 2358be image transfers - which alone are not useful. 2359As such, if no format feature flags are supported, the format itself is not 2360supported, and images of that format cannot be created. 2361endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2362ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2363If no format feature flags are supported, the format itself is not 2364supported, and images of that format cannot be created. 2365endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2366==== 2367 2368If pname:format is a block-compressed format, then pname:bufferFeatures 2369must: not support any features for the format. 2370 2371ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2372If pname:format is not a multi-plane format then pname:linearTilingFeatures 2373and pname:optimalTilingFeatures must: not contain 2374ename:VK_FORMAT_FEATURE_DISJOINT_BIT. 2375endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2376 2377include::{generated}/validity/structs/VkFormatProperties.txt[] 2378-- 2379 2380[open,refpage='VkFormatFeatureFlagBits',desc='Bitmask specifying features supported by a buffer',type='enums'] 2381-- 2382Bits which can: be set in the slink:VkFormatProperties features 2383pname:linearTilingFeatures, pname:optimalTilingFeatures, 2384ifdef::VK_EXT_image_drm_format_modifier[] 2385slink:VkDrmFormatModifierPropertiesEXT::pname:drmFormatModifierTilingFeatures, 2386endif::VK_EXT_image_drm_format_modifier[] 2387and pname:bufferFeatures are: 2388 2389include::{generated}/api/enums/VkFormatFeatureFlagBits.txt[] 2390 2391These values 2392ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 2393ifdef::VK_KHR_format_feature_flags2[] 2394all have the same meaning as the equivalently named values for 2395tlink:VkFormatFeatureFlags2KHR and 2396endif::VK_KHR_format_feature_flags2[] 2397endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 2398may: be set in 2399ifndef::VK_EXT_image_drm_format_modifier[] 2400pname:linearTilingFeatures and pname:optimalTilingFeatures, 2401endif::VK_EXT_image_drm_format_modifier[] 2402ifdef::VK_EXT_image_drm_format_modifier[] 2403pname:linearTilingFeatures, pname:optimalTilingFeatures, and 2404slink:VkDrmFormatModifierPropertiesEXT::pname:drmFormatModifierTilingFeatures, 2405endif::VK_EXT_image_drm_format_modifier[] 2406specifying that the features are supported by <<VkImage,images>> or 2407<<VkImageView,image views>> 2408ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2409or <<VkSamplerYcbcrConversion,sampler {YCbCr} conversion objects>> 2410endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2411created with the queried 2412flink:vkGetPhysicalDeviceFormatProperties::pname:format: 2413 2414 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT specifies that an image view 2415 can: be <<descriptorsets-sampledimage, sampled from>>. 2416 * ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT specifies that an image view 2417 can: be used as a <<descriptorsets-storageimage, storage image>>. 2418 * ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT specifies that an image 2419 view can: be used as storage image that supports atomic operations. 2420 * ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT specifies that an image 2421 view can: be used as a framebuffer color attachment and as an input 2422 attachment. 2423 * ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT specifies that an 2424 image view can: be used as a framebuffer color attachment that supports 2425 blending and as an input attachment. 2426 * ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT specifies that an 2427 image view can: be used as a framebuffer depth/stencil attachment and as 2428 an input attachment. 2429 * ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT specifies that an image can: be 2430 used as pname:srcImage for the 2431ifndef::VK_KHR_copy_commands2[] 2432 fname:vkCmdBlitImage command. 2433endif::VK_KHR_copy_commands2[] 2434ifdef::VK_KHR_copy_commands2[] 2435 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 2436endif::VK_KHR_copy_commands2[] 2437 * ename:VK_FORMAT_FEATURE_BLIT_DST_BIT specifies that an image can: be 2438 used as pname:dstImage for the 2439ifndef::VK_KHR_copy_commands2[] 2440 fname:vkCmdBlitImage command. 2441endif::VK_KHR_copy_commands2[] 2442ifdef::VK_KHR_copy_commands2[] 2443 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 2444endif::VK_KHR_copy_commands2[] 2445 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT specifies that 2446 if ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is also set, an image view 2447 can: be used with a sampler that has either of pname:magFilter or 2448 pname:minFilter set to ename:VK_FILTER_LINEAR, or pname:mipmapMode set 2449 to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. 2450 If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is also set, an image can be 2451 used as the pname:srcImage to 2452ifndef::VK_KHR_copy_commands2[] 2453 fname:vkCmdBlitImage 2454endif::VK_KHR_copy_commands2[] 2455ifdef::VK_KHR_copy_commands2[] 2456 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage 2457endif::VK_KHR_copy_commands2[] 2458 with a pname:filter of ename:VK_FILTER_LINEAR. 2459 This bit must: only be exposed for formats that also support the 2460 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT or 2461 ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT. 2462+ 2463If the format being queried is a depth/stencil format, this bit only 2464specifies that the depth aspect (not the stencil aspect) of an image of this 2465format supports linear filtering, and that linear filtering of the depth 2466aspect is supported whether depth compare is enabled in the sampler or not. 2467Where depth comparison is supported it may: be linear filtered whether this 2468bit is present or not, but where this bit is not present the filtered value 2469may: be computed in an implementation-dependent manner which differs from 2470the normal rules of linear filtering. 2471The resulting value must: be in the range [eq]#[0,1]# and should: be 2472proportional to, or a weighted average of, the number of comparison passes 2473or failures. 2474 2475ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2476 * ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT specifies that an image can: be 2477 used as a source image for <<copies, copy commands>>. 2478 * ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT specifies that an image can: be 2479 used as a destination image for <<copies, copy commands>> and <<clears, 2480 clear commands>>. 2481endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2482ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2483 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT specifies 2484 sname:VkImage can: be used as a sampled image with a min or max 2485 elink:VkSamplerReductionMode. 2486 This bit must: only be exposed for formats that also support the 2487 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. 2488endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2489ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2490 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT specifies 2491 that sname:VkImage can: be used with a sampler that has either of 2492 pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_EXT, or 2493 be the source image for a blit with pname:filter set to 2494 ename:VK_FILTER_CUBIC_EXT. 2495 This bit must: only be exposed for formats that also support the 2496 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. 2497 If the format being queried is a depth/stencil format, this only 2498 specifies that the depth aspect is cubic filterable. 2499endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2500ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2501 * ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT specifies that an 2502 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 2503 conversion>> using this format as a source, and that an image of this 2504 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 2505 pname:xChromaOffset and/or pname:yChromaOffset of 2506 ename:VK_CHROMA_LOCATION_MIDPOINT. 2507 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 2508 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 2509 If a format does not incorporate chroma downsampling (it is not a 2510 "`422`" or "`420`" format) but the implementation supports sampler 2511 {YCbCr} conversion for this format, the implementation must: set 2512 ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT. 2513 * ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT specifies that an 2514 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 2515 conversion>> using this format as a source, and that an image of this 2516 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 2517 pname:xChromaOffset and/or pname:yChromaOffset of 2518 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 2519 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 2520 ename:VK_CHROMA_LOCATION_MIDPOINT. 2521 If neither ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT nor 2522 ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT is set, the 2523 application must: not define a <<samplers-YCbCr-conversion,sampler 2524 {YCbCr} conversion>> using this format as a source. 2525 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT 2526 specifies that an application can: define a 2527 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>> using this 2528 format as a source with pname:chromaFilter set to 2529 ename:VK_FILTER_LINEAR. 2530 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT 2531 specifies that the format can have different chroma, min, and mag 2532 filters. 2533 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 2534 specifies that reconstruction is explicit, as described in 2535 <<textures-chroma-reconstruction>>. 2536 If this bit is not present, reconstruction is implicit by default. 2537 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT 2538 specifies that reconstruction can: be forcibly made explicit by setting 2539 slink:VkSamplerYcbcrConversionCreateInfo::pname:forceExplicitReconstruction 2540 to ename:VK_TRUE. 2541 If the format being queried supports 2542 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 2543 it must: also support 2544 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT. 2545 * ename:VK_FORMAT_FEATURE_DISJOINT_BIT specifies that a multi-planar image 2546 can: have the ename:VK_IMAGE_CREATE_DISJOINT_BIT set during image 2547 creation. 2548 An implementation must: not set ename:VK_FORMAT_FEATURE_DISJOINT_BIT for 2549 _single-plane formats_. 2550endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2551ifdef::VK_EXT_fragment_density_map[] 2552 * ename:VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an 2553 image view can: be used as a 2554 <<renderpass-fragmentdensitymapattachment,fragment density map 2555 attachment>>. 2556endif::VK_EXT_fragment_density_map[] 2557ifdef::VK_KHR_fragment_shading_rate[] 2558 * ename:VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 2559 specifies that an image view can: be used as a 2560 <<primsrast-fragment-shading-rate-attachment, fragment shading rate 2561 attachment>>. 2562 An implementation must: not set this feature for formats with numeric 2563 type other than etext:*UINT, or set it as a buffer feature. 2564endif::VK_KHR_fragment_shading_rate[] 2565ifdef::VK_KHR_video_decode_queue[] 2566 * ename:VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an 2567 image view with this format can: be used as an output for 2568 <<video-decode-operations,video decode operations>> 2569 * ename:VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR specifies that an image 2570 view with this format can: be used as a DPB for 2571 <<video-decode-operations,video decode operations>> 2572endif::VK_KHR_video_decode_queue[] 2573ifdef::VK_KHR_video_encode_queue[] 2574 * ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an 2575 image view with this format can: be used as an input to 2576 <<video-encode-operations,video encode operations>> 2577 * ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR specifies that an image 2578 view with this format can: be used as a DPB for 2579 <<video-encode-operations,video encode operations>> 2580endif::VK_KHR_video_encode_queue[] 2581 2582[[buffer-compatible-format-features]] 2583 2584The following bits may: be set in pname:bufferFeatures, specifying that the 2585features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer 2586views>> created with the queried 2587flink:vkGetPhysicalDeviceFormatProperties::pname:format: 2588 2589 * ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT specifies that the 2590 format can: be used to create a buffer view that can: be bound to a 2591 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor. 2592 * ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT specifies that the 2593 format can: be used to create a buffer view that can: be bound to a 2594 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor. 2595 * ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT specifies that 2596 atomic operations are supported on 2597 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER with this format. 2598 * ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT specifies that the format can: 2599 be used as a vertex attribute format 2600 (sname:VkVertexInputAttributeDescription::pname:format). 2601ifdef::VK_KHR_acceleration_structure[] 2602 * ename:VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR 2603 specifies that the format can: be used as the vertex format when 2604 creating an <<acceleration-structure,acceleration structure>> 2605 (sname:VkAccelerationStructureGeometryTrianglesDataKHR::pname:vertexFormat). 2606 This format can: also be used as the vertex format in host memory when 2607 doing <<host-acceleration-structure, host acceleration structure>> 2608 builds. 2609endif::VK_KHR_acceleration_structure[] 2610 2611-- 2612 2613[open,refpage='VkFormatFeatureFlags',desc='Bitmask of VkFormatFeatureFlagBits',type='flags'] 2614-- 2615include::{generated}/api/flags/VkFormatFeatureFlags.txt[] 2616 2617tname:VkFormatFeatureFlags is a bitmask type for setting a mask of zero or 2618more elink:VkFormatFeatureFlagBits. 2619-- 2620 2621ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 2622 2623[open,refpage='vkGetPhysicalDeviceFormatProperties2',desc='Lists physical device\'s format capabilities',type='protos'] 2624-- 2625To query supported format features which are properties of the physical 2626device, call: 2627 2628ifdef::VK_VERSION_1_1[] 2629include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties2.txt[] 2630endif::VK_VERSION_1_1[] 2631 2632ifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command] 2633 2634ifdef::VK_KHR_get_physical_device_properties2[] 2635include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties2KHR.txt[] 2636endif::VK_KHR_get_physical_device_properties2[] 2637 2638 * pname:physicalDevice is the physical device from which to query the 2639 format properties. 2640 * pname:format is the format whose properties are queried. 2641 * pname:pFormatProperties is a pointer to a slink:VkFormatProperties2 2642 structure in which physical device properties for pname:format are 2643 returned. 2644 2645fname:vkGetPhysicalDeviceFormatProperties2 behaves similarly to 2646flink:vkGetPhysicalDeviceFormatProperties, with the ability to return 2647extended information in a pname:pNext chain of output structures. 2648 2649include::{generated}/validity/protos/vkGetPhysicalDeviceFormatProperties2.txt[] 2650-- 2651 2652[open,refpage='VkFormatProperties2',desc='Structure specifying image format properties',type='structs'] 2653-- 2654The sname:VkFormatProperties2 structure is defined as: 2655 2656include::{generated}/api/structs/VkFormatProperties2.txt[] 2657 2658ifdef::VK_KHR_get_physical_device_properties2[] 2659or the equivalent 2660 2661include::{generated}/api/structs/VkFormatProperties2KHR.txt[] 2662endif::VK_KHR_get_physical_device_properties2[] 2663 2664 * pname:sType is the type of this structure. 2665 * pname:pNext is `NULL` or a pointer to a structure extending this 2666 structure. 2667 * pname:formatProperties is a slink:VkFormatProperties structure 2668 describing features supported by the requested format. 2669 2670include::{generated}/validity/structs/VkFormatProperties2.txt[] 2671-- 2672 2673ifdef::VK_EXT_image_drm_format_modifier[] 2674[open,refpage='VkDrmFormatModifierPropertiesListEXT',desc='Structure specifying the list of DRM format modifiers supported for a format',type='structs'] 2675-- 2676To obtain the list of <<glossary-drm-format-modifier,Linux DRM format 2677modifiers>> compatible with a elink:VkFormat, add a 2678slink:VkDrmFormatModifierPropertiesListEXT structure to the pname:pNext 2679chain of slink:VkFormatProperties2. 2680 2681The slink:VkDrmFormatModifierPropertiesListEXT structure is defined as: 2682 2683include::{generated}/api/structs/VkDrmFormatModifierPropertiesListEXT.txt[] 2684 2685 * pname:sType is the type of this structure. 2686 * pname:pNext is `NULL` or a pointer to a structure extending this 2687 structure. 2688 * pname:drmFormatModifierCount is an inout parameter related to the number 2689 of modifiers compatible with the pname:format, as described below. 2690 * pname:pDrmFormatModifierProperties is either `NULL` or a pointer to an 2691 array of slink:VkDrmFormatModifierPropertiesEXT structures. 2692 2693If pname:pDrmFormatModifierProperties is `NULL`, then the function returns 2694in pname:drmFormatModifierCount the number of modifiers compatible with the 2695queried pname:format. 2696Otherwise, the application must: set pname:drmFormatModifierCount to the 2697length of the array pname:pDrmFormatModifierProperties; the function will 2698write at most pname:drmFormatModifierCount elements to the array, and will 2699return in pname:drmFormatModifierCount the number of elements written. 2700 2701Among the elements in array pname:pDrmFormatModifierProperties, each 2702returned pname:drmFormatModifier must: be unique. 2703 2704include::{generated}/validity/structs/VkDrmFormatModifierPropertiesListEXT.txt[] 2705-- 2706 2707[open,refpage='VkDrmFormatModifierPropertiesEXT',desc='Structure specifying properties of a format when combined with a DRM format modifier',type='structs'] 2708-- 2709The slink:VkDrmFormatModifierPropertiesEXT structure describes properties of 2710a elink:VkFormat when that format is combined with a 2711<<glossary-drm-format-modifier,Linux DRM format modifier>>. 2712These properties, like those of slink:VkFormatProperties2, are independent 2713of any particular image. 2714 2715The slink:VkDrmFormatModifierPropertiesEXT structure is defined as: 2716 2717include::{generated}/api/structs/VkDrmFormatModifierPropertiesEXT.txt[] 2718 2719 * pname:drmFormatModifier is a _Linux DRM format modifier_. 2720 * pname:drmFormatModifierPlaneCount is the number of _memory planes_ in 2721 any image created with pname:format and pname:drmFormatModifier. 2722 An image's _memory planecount_ is distinct from its _format planecount_, 2723 as explained below. 2724 * pname:drmFormatModifierTilingFeatures is a bitmask of 2725 elink:VkFormatFeatureFlagBits that are supported by any image created 2726 with pname:format and pname:drmFormatModifier. 2727 2728The returned pname:drmFormatModifierTilingFeatures must: contain at least 2729one bit. 2730 2731The implementation must: not return etext:DRM_FORMAT_MOD_INVALID in 2732pname:drmFormatModifier. 2733 2734An image's _memory planecount_ (as returned by 2735pname:drmFormatModifierPlaneCount) is distinct from its _format planecount_ 2736(in the sense of <<formats-requiring-sampler-ycbcr-conversion,multi-planar>> 2737{YCbCr} formats). 2738In tlink:VkImageAspectFlags, each 2739`VK_IMAGE_ASPECT_MEMORY_PLANE__{ibit}__BIT_EXT` represents a _memory plane_ 2740and each `VK_IMAGE_ASPECT_PLANE__{ibit}__BIT` a _format plane_. 2741 2742An image's set of _format planes_ is an ordered partition of the image's 2743*content* into separable groups of format components. 2744The ordered partition is encoded in the name of each elink:VkFormat. 2745For example, ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM contains two _format 2746planes_; the first plane contains the green component and the second plane 2747contains the blue component and red component. 2748If the format name does not contain `PLANE`, then the format contains a 2749single plane; for example, ename:VK_FORMAT_R8G8B8A8_UNORM. 2750Some commands, such as flink:vkCmdCopyBufferToImage, do not operate on all 2751format components in the image, but instead operate only on the _format 2752planes_ explicitly chosen by the application and operate on each _format 2753plane_ independently. 2754 2755An image's set of _memory planes_ is an ordered partition of the image's 2756*memory* rather than the image's *content*. 2757Each _memory plane_ is a contiguous range of memory. 2758The union of an image's _memory planes_ is not necessarily contiguous. 2759 2760If an image is <<glossary-linear-resource,linear>>, then the partition is 2761the same for _memory planes_ and for _format planes_. 2762Therefore, if the returned pname:drmFormatModifier is 2763code:DRM_FORMAT_MOD_LINEAR, then pname:drmFormatModifierPlaneCount must: 2764equal the _format planecount_, and pname:drmFormatModifierTilingFeatures 2765must: be identical to the 2766slink:VkFormatProperties2::pname:linearTilingFeatures returned in the same 2767pname:pNext chain. 2768 2769If an image is <<glossary-linear-resource,non-linear>>, then the partition 2770of the image's *memory* into _memory planes_ is implementation-specific and 2771may: be unrelated to the partition of the image's *content* into _format 2772planes_. 2773For example, consider an image whose pname:format is 2774ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, pname:tiling is 2775ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, whose pname:drmFormatModifier 2776is not code:DRM_FORMAT_MOD_LINEAR, and pname:flags lacks 2777ename:VK_IMAGE_CREATE_DISJOINT_BIT. 2778The image has 3 _format planes_, and commands such 2779flink:vkCmdCopyBufferToImage act on each _format plane_ independently as if 2780the data of each _format plane_ were separable from the data of the other 2781planes. 2782In a straightforward implementation, the implementation may: store the 2783image's content in 3 adjacent _memory planes_ where each _memory plane_ 2784corresponds exactly to a _format plane_. 2785However, the implementation may: also store the image's content in a single 2786_memory plane_ where all format components are combined using an 2787implementation-private block-compressed format; or the implementation may: 2788store the image's content in a collection of 7 adjacent _memory planes_ 2789using an implementation-private sharding technique. 2790Because the image is non-linear and non-disjoint, the implementation has 2791much freedom when choosing the image's placement in memory. 2792 2793The _memory planecount_ applies to function parameters and structures only 2794when the API specifies an explicit requirement on 2795pname:drmFormatModifierPlaneCount. 2796In all other cases, the _memory planecount_ is ignored. 2797 2798include::{generated}/validity/structs/VkDrmFormatModifierPropertiesEXT.txt[] 2799-- 2800 2801ifdef::VK_KHR_format_feature_flags2[] 2802[open,refpage='VkDrmFormatModifierPropertiesList2EXT',desc='Structure specifying the list of DRM format modifiers supported for a format',type='structs'] 2803-- 2804The list of <<glossary-drm-format-modifier,Linux DRM format modifiers>> 2805compatible with a elink:VkFormat can: be obtained by adding a 2806slink:VkDrmFormatModifierPropertiesList2EXT structure to the pname:pNext 2807chain of slink:VkFormatProperties2. 2808 2809The slink:VkDrmFormatModifierPropertiesList2EXT structure is defined as: 2810 2811include::{generated}/api/structs/VkDrmFormatModifierPropertiesList2EXT.txt[] 2812 2813 * pname:sType is the type of this structure. 2814 * pname:pNext is `NULL` or a pointer to a structure extending this 2815 structure. 2816 * pname:drmFormatModifierCount is an inout parameter related to the number 2817 of modifiers compatible with the pname:format, as described below. 2818 * pname:pDrmFormatModifierProperties is either `NULL` or a pointer to an 2819 array of slink:VkDrmFormatModifierProperties2EXT structures. 2820 2821If pname:pDrmFormatModifierProperties is `NULL`, the number of modifiers 2822compatible with the queried pname:format is returned in 2823pname:drmFormatModifierCount. 2824Otherwise, the application must: set pname:drmFormatModifierCount to the 2825length of the array pname:pDrmFormatModifierProperties; the function will 2826write at most pname:drmFormatModifierCount elements to the array, and will 2827return in pname:drmFormatModifierCount the number of elements written. 2828 2829Among the elements in array pname:pDrmFormatModifierProperties, each 2830returned pname:drmFormatModifier must: be unique. 2831 2832Among the elements in array pname:pDrmFormatModifierProperties, the bits 2833reported in pname:drmFormatModifierTilingFeatures must: include the bits 2834reported in the corresponding element of 2835sname:VkDrmFormatModifierPropertiesListEXT::pname:pDrmFormatModifierProperties. 2836 2837include::{generated}/validity/structs/VkDrmFormatModifierPropertiesList2EXT.txt[] 2838-- 2839 2840[open,refpage='VkDrmFormatModifierProperties2EXT',desc='Structure specifying properties of a format when combined with a DRM format modifier',type='structs'] 2841-- 2842The slink:VkDrmFormatModifierProperties2EXT structure describes properties 2843of a elink:VkFormat when that format is combined with a 2844<<glossary-drm-format-modifier,Linux DRM format modifier>>. 2845These properties, like those of slink:VkFormatProperties2, are independent 2846of any particular image. 2847 2848The slink:VkDrmFormatModifierPropertiesEXT structure is defined as: 2849 2850include::{generated}/api/structs/VkDrmFormatModifierProperties2EXT.txt[] 2851 2852 * pname:drmFormatModifier is a _Linux DRM format modifier_. 2853 * pname:drmFormatModifierPlaneCount is the number of _memory planes_ in 2854 any image created with pname:format and pname:drmFormatModifier. 2855 An image's _memory planecount_ is distinct from its _format planecount_, 2856 as explained below. 2857 * pname:drmFormatModifierTilingFeatures is a bitmask of 2858 elink:VkFormatFeatureFlagBits2KHR that are supported by any image 2859 created with pname:format and pname:drmFormatModifier. 2860include::{generated}/validity/structs/VkDrmFormatModifierProperties2EXT.txt[] 2861-- 2862endif::VK_KHR_format_feature_flags2[] 2863endif::VK_EXT_image_drm_format_modifier[] 2864 2865ifdef::VK_KHR_format_feature_flags2[] 2866[open,refpage='VkFormatProperties3KHR',desc='Structure specifying image format properties',type='structs'] 2867-- 2868 2869To query supported format extended features which are properties of the 2870physical device, add slink:VkFormatProperties3KHR structure to the 2871pname:pNext chain of slink:VkFormatProperties2. 2872 2873The slink:VkFormatProperties3KHR structure is defined as: 2874 2875include::{generated}/api/structs/VkFormatProperties3KHR.txt[] 2876 2877 * pname:linearTilingFeatures is a bitmask of 2878 elink:VkFormatFeatureFlagBits2KHR specifying features supported by 2879 images created with a pname:tiling parameter of 2880 ename:VK_IMAGE_TILING_LINEAR. 2881 * pname:optimalTilingFeatures is a bitmask of 2882 elink:VkFormatFeatureFlagBits2KHR specifying features supported by 2883 images created with a pname:tiling parameter of 2884 ename:VK_IMAGE_TILING_OPTIMAL. 2885 * pname:bufferFeatures is a bitmask of elink:VkFormatFeatureFlagBits2KHR 2886 specifying features supported by buffers. 2887 2888The bits reported in pname:linearTilingFeatures, pname:optimalTilingFeatures 2889and pname:bufferFeatures must: include the bits reported in the 2890corresponding fields of sname:VkFormatProperties2::pname:formatProperties. 2891 2892include::{generated}/validity/structs/VkFormatProperties3KHR.txt[] 2893-- 2894 2895[open,refpage='VkFormatFeatureFlagBits2KHR',desc='Bitmask specifying features supported by a buffer',type='enums'] 2896-- 2897Bits which can: be set in the slink:VkFormatProperties3KHR features 2898pname:linearTilingFeatures, pname:optimalTilingFeatures, and 2899pname:bufferFeatures are: 2900 2901include::{generated}/api/enums/VkFormatFeatureFlagBits2KHR.txt[] 2902 2903The following bits may: be set in pname:linearTilingFeatures and 2904pname:optimalTilingFeatures, specifying that the features are supported by 2905<<VkImage,images>> or <<VkImageView,image views>> 2906ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2907or <<VkSamplerYcbcrConversion,sampler {YCbCr} conversion objects>> 2908endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2909created with the queried 2910flink:vkGetPhysicalDeviceFormatProperties2::pname:format: 2911 2912 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR specifies that an image 2913 view can: be <<descriptorsets-sampledimage, sampled from>>. 2914 * ename:VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR specifies that an image 2915 view can: be used as a <<descriptorsets-storageimage, storage image>>. 2916 * ename:VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR specifies that an 2917 image view can: be used as storage image that supports atomic 2918 operations. 2919 * ename:VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR specifies that an 2920 image view can: be used as a framebuffer color attachment and as an 2921 input attachment. 2922 * ename:VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR specifies that 2923 an image view can: be used as a framebuffer color attachment that 2924 supports blending and as an input attachment. 2925 * ename:VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR specifies 2926 that an image view can: be used as a framebuffer depth/stencil 2927 attachment and as an input attachment. 2928 * ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR specifies that an image can: 2929 be used as pname:srcImage for the 2930ifndef::VK_KHR_copy_commands2[] 2931 fname:vkCmdBlitImage command. 2932endif::VK_KHR_copy_commands2[] 2933ifdef::VK_KHR_copy_commands2[] 2934 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 2935endif::VK_KHR_copy_commands2[] 2936 * ename:VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR specifies that an image can: 2937 be used as pname:dstImage for the 2938ifndef::VK_KHR_copy_commands2[] 2939 fname:vkCmdBlitImage command. 2940endif::VK_KHR_copy_commands2[] 2941ifdef::VK_KHR_copy_commands2[] 2942 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 2943endif::VK_KHR_copy_commands2[] 2944 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR specifies 2945 that if ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR is also set, an 2946 image view can: be used with a sampler that has either of 2947 pname:magFilter or pname:minFilter set to ename:VK_FILTER_LINEAR, or 2948 pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. 2949 If ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR is also set, an image can 2950 be used as the pname:srcImage to 2951ifndef::VK_KHR_copy_commands2[] 2952 fname:vkCmdBlitImage 2953endif::VK_KHR_copy_commands2[] 2954ifdef::VK_KHR_copy_commands2[] 2955 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage 2956endif::VK_KHR_copy_commands2[] 2957 with a pname:filter of ename:VK_FILTER_LINEAR. 2958 This bit must: only be exposed for formats that also support the 2959 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR or 2960 ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR. 2961+ 2962If the format being queried is a depth/stencil format, this bit only 2963specifies that the depth aspect (not the stencil aspect) of an image of this 2964format supports linear filtering. 2965Where depth comparison is supported it may: be linear filtered whether this 2966bit is present or not, but where this bit is not present the filtered value 2967may: be computed in an implementation-dependent manner which differs from 2968the normal rules of linear filtering. 2969The resulting value must: be in the range [eq]#[0,1]# and should: be 2970proportional to, or a weighted average of, the number of comparison passes 2971or failures. 2972 2973ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2974 * ename:VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR specifies that an image 2975 can: be used as a source image for <<copies, copy commands>>. 2976 * ename:VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR specifies that an image 2977 can: be used as a destination image for <<copies, copy commands>> and 2978 <<clears, clear commands>>. 2979endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2980ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2981 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR specifies 2982 sname:VkImage can: be used as a sampled image with a min or max 2983 elink:VkSamplerReductionMode. 2984 This bit must: only be exposed for formats that also support the 2985 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR. 2986endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2987ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2988 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT specifies 2989 that sname:VkImage can: be used with a sampler that has either of 2990 pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_EXT, or 2991 be the source image for a blit with pname:filter set to 2992 ename:VK_FILTER_CUBIC_EXT. 2993 This bit must: only be exposed for formats that also support the 2994 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR. 2995 If the format being queried is a depth/stencil format, this only 2996 specifies that the depth aspect is cubic filterable. 2997endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2998ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2999 * ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR specifies that 3000 an application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 3001 conversion>> using this format as a source, and that an image of this 3002 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 3003 pname:xChromaOffset and/or pname:yChromaOffset of 3004 ename:VK_CHROMA_LOCATION_MIDPOINT. 3005 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 3006 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 3007 If a format does not incorporate chroma downsampling (it is not a 3008 "`422`" or "`420`" format) but the implementation supports sampler 3009 {YCbCr} conversion for this format, the implementation must: set 3010 ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR. 3011 * ename:VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR specifies that 3012 an application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 3013 conversion>> using this format as a source, and that an image of this 3014 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 3015 pname:xChromaOffset and/or pname:yChromaOffset of 3016 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 3017 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 3018 ename:VK_CHROMA_LOCATION_MIDPOINT. 3019 If neither ename:VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR nor 3020 ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR is set, the 3021 application must: not define a <<samplers-YCbCr-conversion,sampler 3022 {YCbCr} conversion>> using this format as a source. 3023 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR 3024 specifies that an application can: define a 3025 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>> using this 3026 format as a source with pname:chromaFilter set to 3027 ename:VK_FILTER_LINEAR. 3028 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR 3029 specifies that the format can have different chroma, min, and mag 3030 filters. 3031 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR 3032 specifies that reconstruction is explicit, as described in 3033 <<textures-chroma-reconstruction>>. 3034 If this bit is not present, reconstruction is implicit by default. 3035 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR 3036 specifies that reconstruction can: be forcibly made explicit by setting 3037 slink:VkSamplerYcbcrConversionCreateInfo::pname:forceExplicitReconstruction 3038 to ename:VK_TRUE. 3039 If the format being queried supports 3040 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR 3041 it must: also support 3042 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR. 3043 * ename:VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR specifies that a multi-planar 3044 image can: have the ename:VK_IMAGE_CREATE_DISJOINT_BIT set during image 3045 creation. 3046 An implementation must: not set 3047 ename:VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR for _single-plane formats_. 3048endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3049ifdef::VK_EXT_fragment_density_map[] 3050 * ename:VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an 3051 image view can: be used as a 3052 <<renderpass-fragmentdensitymapattachment,fragment density map 3053 attachment>>. 3054endif::VK_EXT_fragment_density_map[] 3055ifdef::VK_KHR_fragment_shading_rate[] 3056 * ename:VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 3057 specifies that an image view can: be used as a 3058 <<primsrast-fragment-shading-rate-attachment, fragment shading rate 3059 attachment>>. 3060 An implementation must: not set this feature for formats with numeric 3061 type other than etext:*UINT, or set it as a buffer feature. 3062endif::VK_KHR_fragment_shading_rate[] 3063ifdef::VK_KHR_video_decode_queue[] 3064 * ename:VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an 3065 image view with this format can: be used as an output for 3066 <<video-decode-operations,video decode operations>> 3067 * ename:VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR specifies that an 3068 image view with this format can: be used as a DPB for 3069 <<video-decode-operations,video decode operations>> 3070endif::VK_KHR_video_decode_queue[] 3071ifdef::VK_KHR_video_encode_queue[] 3072 * ename:VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an 3073 image view with this format can: be used as an input to 3074 <<video-encode-operations,video encode operations>> 3075 * ename:VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR specifies that an 3076 image view with this format can: be used as a DPB for 3077 <<video-encode-operations,video encode operations>> 3078endif::VK_KHR_video_encode_queue[] 3079 * ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR specifies 3080 that image views created with this format can: be used as 3081 <<descriptorsets-storageimage, storage images>> for read operations 3082 without specifying a format. 3083 * ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR specifies 3084 that image views created with this format can: be used as 3085 <<descriptorsets-storageimage, storage images>> for write operations 3086 without specifying a format. 3087 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR 3088 specifies that image views created with this format can: be used for 3089 depth comparison performed by code:OpImage*Dref instructions. 3090 3091The following bits may: be set in pname:bufferFeatures, specifying that the 3092features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer 3093views>> created with the queried 3094flink:vkGetPhysicalDeviceFormatProperties2::pname:format: 3095 3096 * ename:VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR specifies that 3097 the format can: be used to create a buffer view that can: be bound to a 3098 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor. 3099 * ename:VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR specifies that 3100 the format can: be used to create a buffer view that can: be bound to a 3101 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor. 3102 * ename:VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR specifies 3103 that atomic operations are supported on 3104 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER with this format. 3105 * ename:VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR specifies that the 3106 format can: be used as a vertex attribute format 3107 (sname:VkVertexInputAttributeDescription::pname:format). 3108ifdef::VK_KHR_acceleration_structure[] 3109 * ename:VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR 3110 specifies that the format can: be used as the vertex format when 3111 creating an <<acceleration-structure,acceleration structure>> 3112 (sname:VkAccelerationStructureGeometryTrianglesDataKHR::pname:vertexFormat). 3113 This format can: also be used as the vertex format in host memory when 3114 doing <<host-acceleration-structure, host acceleration structure>> 3115 builds. 3116endif::VK_KHR_acceleration_structure[] 3117-- 3118 3119[open,refpage='VkFormatFeatureFlags2KHR',desc='Bitmask of VkFormatFeatureFlagBits2KHR',type='flags'] 3120-- 3121include::{generated}/api/flags/VkFormatFeatureFlags2KHR.txt[] 3122 3123tname:VkFormatFeatureFlags2KHR is a bitmask type for setting a mask of zero 3124or more elink:VkFormatFeatureFlagBits2KHR. 3125-- 3126endif::VK_KHR_format_feature_flags2[] 3127endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 3128 3129 3130[[potential-format-features]] 3131=== Potential Format Features 3132 3133Some <<fundamentals-validusage,valid usage conditions>> depend on the format 3134features supported by an slink:VkImage whose elink:VkImageTiling is unknown. 3135In such cases the exact elink:VkFormatFeatureFlagBits supported by the 3136slink:VkImage cannot be determined, so the valid usage conditions are 3137expressed in terms of the _potential format features_ of the slink:VkImage 3138format. 3139 3140The _potential format features_ of a elink:VkFormat are defined as follows: 3141 3142 * The union of elink:VkFormatFeatureFlagBits 3143ifdef::VK_KHR_format_feature_flags2[] 3144 and elink:VkFormatFeatureFlagBits2KHR, 3145endif::VK_KHR_format_feature_flags2[] 3146 supported when the elink:VkImageTiling is ename:VK_IMAGE_TILING_OPTIMAL 3147ifdef::VK_EXT_image_drm_format_modifier[] 3148 , ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, 3149endif::VK_EXT_image_drm_format_modifier[] 3150 or ename:VK_IMAGE_TILING_LINEAR 3151ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] 3152 if elink:VkFormat is not ename:VK_FORMAT_UNDEFINED 3153 * slink:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures 3154ifdef::VK_KHR_format_feature_flags2[] 3155 and 3156 slink:VkAndroidHardwareBufferFormatProperties2ANDROID::pname:formatFeatures 3157endif::VK_KHR_format_feature_flags2[] 3158 of a valid external format if elink:VkFormat is 3159 ename:VK_FORMAT_UNDEFINED 3160endif::VK_ANDROID_external_memory_android_hardware_buffer[] 3161 3162[[features-required-format-support]] 3163== Required Format Support 3164 3165Implementations must: support at least the following set of features on the 3166listed formats. 3167For images, these features must: be supported for every elink:VkImageType 3168(including arrayed and cube variants) unless otherwise noted. 3169These features are supported on existing formats without needing to 3170advertise an extension or needing to explicitly enable them. 3171Support for additional functionality beyond the requirements listed here is 3172queried using the flink:vkGetPhysicalDeviceFormatProperties command. 3173 3174[NOTE] 3175.Note 3176==== 3177Unless otherwise excluded below, the required formats are supported for all 3178tlink:VkImageCreateFlags values as long as those flag values are otherwise 3179allowed. 3180==== 3181 3182The following tables show which feature bits must: be supported for each 3183format. 3184ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 3185Formats that are required to support 3186ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must: also support 3187ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT and 3188ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT. 3189endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 3190 3191.Key for format feature tables 3192[width="70%",cols="1,10"] 3193|==== 3194^|{sym1} | This feature must: be supported on the named format 3195^|{sym2} | This feature must: be supported on at least some 3196of the named formats, with more information in the table 3197where the symbol appears 3198^|{sym3} | This feature must: be supported with some caveats or 3199preconditions, with more information in the table where the symbol appears 3200|==== 3201 3202.Feature bits in pname:optimalTilingFeatures 3203[width="70%"] 3204|==== 3205ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 3206|ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT 3207|ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT 3208endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 3209|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT 3210|ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT 3211|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT 3212|ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3213|ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT 3214|ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT 3215|ename:VK_FORMAT_FEATURE_BLIT_DST_BIT 3216|ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT 3217|ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT 3218ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 3219|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT 3220endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 3221|==== 3222 3223.Feature bits in pname:bufferFeatures 3224[width="70%"] 3225|==== 3226|ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT 3227|ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT 3228|ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT 3229|ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT 3230|==== 3231 3232<<< 3233 3234[[formats-mandatory-features-subbyte]] 3235.Mandatory format support: sub-byte components 3236[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3237|==== 323813+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 323912+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 324011+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 324110+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 32429+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 32438+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 32447+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 32456+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 32465+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 32474+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 32483+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 32492+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 32501+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3251s| Format 3252| ename:VK_FORMAT_UNDEFINED | | | | | | | | | | | | | 3253| ename:VK_FORMAT_R4G4_UNORM_PACK8 | | | | | | | | | | | | | 3254| ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 | | | | | | | | | | | | | 3255| ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | | | | | | | | 3256| ename:VK_FORMAT_R5G6B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 3257| ename:VK_FORMAT_B5G6R5_UNORM_PACK16 | | | | | | | | | | | | | 3258| ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 | | | | | | | | | | | | | 3259| ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 | | | | | | | | | | | | | 3260| ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 3261ifdef::VK_EXT_4444_formats[] 3262| ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3263| ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT | {sym3} | {sym3} | {sym3} | | | | | | | | | | 326414+| Format features marked {sym2} must: be supported for 3265pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3266slink:VkPhysicalDevice4444FormatsFeaturesEXT::pname:formatA4R4G4B4 feature. 326714+| Format features marked {sym3} must: be supported for 3268pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3269slink:VkPhysicalDevice4444FormatsFeaturesEXT::pname:formatA4B4G4R4 feature. 3270endif::VK_EXT_4444_formats[] 3271|==== 3272 3273<<< 3274 3275[[formats-mandatory-features-2byte]] 3276.Mandatory format support: 1-3 byte-sized components 3277[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3278|==== 327913+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 328012+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 328111+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 328210+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 32839+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 32848+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 32857+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 32866+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 32875+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 32884+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 32893+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 32902+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 32911+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3292s| Format 3293| ename:VK_FORMAT_R8_UNORM | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3294| ename:VK_FORMAT_R8_SNORM | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | {sym1} | {sym1} | | 3295| ename:VK_FORMAT_R8_USCALED | | | | | | | | | | | | | 3296| ename:VK_FORMAT_R8_SSCALED | | | | | | | | | | | | | 3297| ename:VK_FORMAT_R8_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3298| ename:VK_FORMAT_R8_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3299| ename:VK_FORMAT_R8_SRGB | | | | | | | | | | | | | 3300| ename:VK_FORMAT_R8G8_UNORM | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3301| ename:VK_FORMAT_R8G8_SNORM | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | {sym1} | {sym1} | | 3302| ename:VK_FORMAT_R8G8_USCALED | | | | | | | | | | | | | 3303| ename:VK_FORMAT_R8G8_SSCALED | | | | | | | | | | | | | 3304| ename:VK_FORMAT_R8G8_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3305| ename:VK_FORMAT_R8G8_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3306| ename:VK_FORMAT_R8G8_SRGB | | | | | | | | | | | | | 3307| ename:VK_FORMAT_R8G8B8_UNORM | | | | | | | | | | | | | 3308| ename:VK_FORMAT_R8G8B8_SNORM | | | | | | | | | | | | | 3309| ename:VK_FORMAT_R8G8B8_USCALED | | | | | | | | | | | | | 3310| ename:VK_FORMAT_R8G8B8_SSCALED | | | | | | | | | | | | | 3311| ename:VK_FORMAT_R8G8B8_UINT | | | | | | | | | | | | | 3312| ename:VK_FORMAT_R8G8B8_SINT | | | | | | | | | | | | | 3313| ename:VK_FORMAT_R8G8B8_SRGB | | | | | | | | | | | | | 3314| ename:VK_FORMAT_B8G8R8_UNORM | | | | | | | | | | | | | 3315| ename:VK_FORMAT_B8G8R8_SNORM | | | | | | | | | | | | | 3316| ename:VK_FORMAT_B8G8R8_USCALED | | | | | | | | | | | | | 3317| ename:VK_FORMAT_B8G8R8_SSCALED | | | | | | | | | | | | | 3318| ename:VK_FORMAT_B8G8R8_UINT | | | | | | | | | | | | | 3319| ename:VK_FORMAT_B8G8R8_SINT | | | | | | | | | | | | | 3320| ename:VK_FORMAT_B8G8R8_SRGB | | | | | | | | | | | | | 332114+| Format features marked with {sym3} must: be supported for 3322pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3323<<features-shaderStorageImageExtendedFormats, 3324pname:shaderStorageImageExtendedFormats>> feature. 3325|==== 3326 3327<<< 3328 3329[[formats-mandatory-features-4byte]] 3330.Mandatory format support: 4 byte-sized components 3331[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3332|==== 333313+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 333412+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 333511+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 333610+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 33379+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 33388+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 33397+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 33406+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 33415+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 33424+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 33433+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 33442+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 33451+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3346s| Format 3347| ename:VK_FORMAT_R8G8B8A8_UNORM | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 3348| ename:VK_FORMAT_R8G8B8A8_SNORM | {sym1} | {sym1} | {sym1} | {sym1} | | | | | | {sym1} | {sym1} | {sym1} | 3349| ename:VK_FORMAT_R8G8B8A8_USCALED | | | | | | | | | | | | | 3350| ename:VK_FORMAT_R8G8B8A8_SSCALED | | | | | | | | | | | | | 3351| ename:VK_FORMAT_R8G8B8A8_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3352| ename:VK_FORMAT_R8G8B8A8_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3353| ename:VK_FORMAT_R8G8B8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 3354| ename:VK_FORMAT_B8G8R8A8_UNORM | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3355| ename:VK_FORMAT_B8G8R8A8_SNORM | | | | | | | | | | | | | 3356| ename:VK_FORMAT_B8G8R8A8_USCALED | | | | | | | | | | | | | 3357| ename:VK_FORMAT_B8G8R8A8_SSCALED | | | | | | | | | | | | | 3358| ename:VK_FORMAT_B8G8R8A8_UINT | | | | | | | | | | | | | 3359| ename:VK_FORMAT_B8G8R8A8_SINT | | | | | | | | | | | | | 3360| ename:VK_FORMAT_B8G8R8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 3361| ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 3362| ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | {sym1} | {sym1} | {sym1} | 3363| ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32 | | | | | | | | | | | | | 3364| ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32 | | | | | | | | | | | | | 3365| ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3366| ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3367| ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 3368|==== 3369 3370<<< 3371 3372[[formats-mandatory-features-10bit]] 3373.Mandatory format support: 10- and 12-bit components 3374[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3375|==== 337613+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 337712+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 337811+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 337910+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 33809+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 33818+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 33827+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 33836+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 33845+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 33854+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 33863+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 33872+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 33881+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3389s| Format 3390| ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32 | | | | | | | | | | | | | 3391| ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32 | | | | | | | | | | | | | 3392| ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32 | | | | | | | | | | | | | 3393| ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32 | | | | | | | | | | | | | 3394| ename:VK_FORMAT_A2R10G10B10_UINT_PACK32 | | | | | | | | | | | | | 3395| ename:VK_FORMAT_A2R10G10B10_SINT_PACK32 | | | | | | | | | | | | | 3396| ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3397| ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32 | | | | | | | | | | | | | 3398| ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32 | | | | | | | | | | | | | 3399| ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32 | | | | | | | | | | | | | 3400| ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | | {sym1} | | 3401| ename:VK_FORMAT_A2B10G10R10_SINT_PACK32 | | | | | | | | | | | | | 3402ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3403| ename:VK_FORMAT_R10X6_UNORM_PACK16 | | | | | | | | | | | | | 3404| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 | | | | | | | | | | | | | 3405| ename:VK_FORMAT_R12X4_UNORM_PACK16 | | | | | | | | | | | | | 3406| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 | | | | | | | | | | | | | 3407endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 340814+| Format features marked with {sym3} must: be supported for 3409pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3410<<features-shaderStorageImageExtendedFormats, 3411pname:shaderStorageImageExtendedFormats>> feature. 3412|==== 3413 3414<<< 3415 3416[[formats-mandatory-features-16bit]] 3417.Mandatory format support: 16-bit components 3418[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3419|==== 342013+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 342112+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 342211+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 342310+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 34249+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 34258+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 34267+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 34276+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 34285+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 34294+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 34303+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 34312+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 34321+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3433s| Format 3434| ename:VK_FORMAT_R16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 3435| ename:VK_FORMAT_R16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 3436| ename:VK_FORMAT_R16_USCALED | | | | | | | | | | | | | 3437| ename:VK_FORMAT_R16_SSCALED | | | | | | | | | | | | | 3438| ename:VK_FORMAT_R16_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3439| ename:VK_FORMAT_R16_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3440| ename:VK_FORMAT_R16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3441| ename:VK_FORMAT_R16G16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 3442| ename:VK_FORMAT_R16G16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 3443| ename:VK_FORMAT_R16G16_USCALED | | | | | | | | | | | | | 3444| ename:VK_FORMAT_R16G16_SSCALED | | | | | | | | | | | | | 3445| ename:VK_FORMAT_R16G16_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3446| ename:VK_FORMAT_R16G16_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3447| ename:VK_FORMAT_R16G16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3448| ename:VK_FORMAT_R16G16B16_UNORM | | | | | | | | | | | | | 3449| ename:VK_FORMAT_R16G16B16_SNORM | | | | | | | | | | | | | 3450| ename:VK_FORMAT_R16G16B16_USCALED | | | | | | | | | | | | | 3451| ename:VK_FORMAT_R16G16B16_SSCALED | | | | | | | | | | | | | 3452| ename:VK_FORMAT_R16G16B16_UINT | | | | | | | | | | | | | 3453| ename:VK_FORMAT_R16G16B16_SINT | | | | | | | | | | | | | 3454| ename:VK_FORMAT_R16G16B16_SFLOAT | | | | | | | | | | | | | 3455| ename:VK_FORMAT_R16G16B16A16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 3456| ename:VK_FORMAT_R16G16B16A16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 3457| ename:VK_FORMAT_R16G16B16A16_USCALED | | | | | | | | | | | | | 3458| ename:VK_FORMAT_R16G16B16A16_SSCALED | | | | | | | | | | | | | 3459| ename:VK_FORMAT_R16G16B16A16_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3460| ename:VK_FORMAT_R16G16B16A16_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3461| ename:VK_FORMAT_R16G16B16A16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 346214+| Format features marked with {sym3} must: be supported for 3463pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3464<<features-shaderStorageImageExtendedFormats, 3465pname:shaderStorageImageExtendedFormats>> feature. 3466|==== 3467 3468<<< 3469 3470[[formats-mandatory-features-32bit]] 3471.Mandatory format support: 32-bit components 3472[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3473|==== 347413+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 347512+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 347611+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 347710+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 34789+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 34798+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 34807+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 34816+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 34825+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 34834+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 34843+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 34852+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 34861+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3487s| Format 3488| ename:VK_FORMAT_R32_UINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1} 3489| ename:VK_FORMAT_R32_SINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1} 3490| ename:VK_FORMAT_R32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3491| ename:VK_FORMAT_R32G32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3492| ename:VK_FORMAT_R32G32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3493| ename:VK_FORMAT_R32G32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3494| ename:VK_FORMAT_R32G32B32_UINT | | | | | | | | | | {sym1} | | | 3495| ename:VK_FORMAT_R32G32B32_SINT | | | | | | | | | | {sym1} | | | 3496| ename:VK_FORMAT_R32G32B32_SFLOAT | | | | | | | | | | {sym1} | | | 3497| ename:VK_FORMAT_R32G32B32A32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3498| ename:VK_FORMAT_R32G32B32A32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3499| ename:VK_FORMAT_R32G32B32A32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3500ifdef::VK_EXT_shader_atomic_float[] 350114+| 3502If the <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>> 3503or the <<features-shaderImageFloat32AtomicAdd, pname:shaderImageFloat32AtomicAdd>> 3504ifdef::VK_EXT_shader_atomic_float2[] 3505or the <<features-shaderImageFloat32AtomicMinMax, pname:shaderImageFloat32AtomicMinMax>> 3506endif::VK_EXT_shader_atomic_float2[] 3507feature is supported, ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT and 3508ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT must: be advertised in 3509pname:optimalTilingFeatures for ename:VK_FORMAT_R32_SFLOAT. 3510endif::VK_EXT_shader_atomic_float[] 3511|==== 3512 3513<<< 3514 3515[[formats-mandatory-features-64bit]] 3516.Mandatory format support: 64-bit/uneven components 3517[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3518|==== 351913+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 352012+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 352111+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 352210+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 35239+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 35248+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 35257+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 35266+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 35275+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 35284+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 35293+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 35302+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 35311+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3532s| Format 3533| ename:VK_FORMAT_R64_UINT | | | 3534| 3535ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3536| 3537ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3538 | | | | | | | | 3539| ename:VK_FORMAT_R64_SINT | | | 3540| 3541ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3542| 3543ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3544 | | | | | | | | 3545| ename:VK_FORMAT_R64_SFLOAT | | | | | | | | | | | | | 3546| ename:VK_FORMAT_R64G64_UINT | | | | | | | | | | | | | 3547| ename:VK_FORMAT_R64G64_SINT | | | | | | | | | | | | | 3548| ename:VK_FORMAT_R64G64_SFLOAT | | | | | | | | | | | | | 3549| ename:VK_FORMAT_R64G64B64_UINT | | | | | | | | | | | | | 3550| ename:VK_FORMAT_R64G64B64_SINT | | | | | | | | | | | | | 3551| ename:VK_FORMAT_R64G64B64_SFLOAT | | | | | | | | | | | | | 3552| ename:VK_FORMAT_R64G64B64A64_UINT | | | | | | | | | | | | | 3553| ename:VK_FORMAT_R64G64B64A64_SINT | | | | | | | | | | | | | 3554| ename:VK_FORMAT_R64G64B64A64_SFLOAT | | | | | | | | | | | | | 3555| ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | | {sym1} | | 3556| ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | | | | 355714+| Format features marked with {sym3} must: be supported for 3558pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3559<<features-shaderStorageImageExtendedFormats, 3560pname:shaderStorageImageExtendedFormats>> feature. 3561ifdef::VK_EXT_shader_image_atomic_int64[] 356214+| 3563If the <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>> 3564feature is supported, ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT and 3565ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT must: be advertised in 3566pname:optimalTilingFeatures for both ename:VK_FORMAT_R64_UINT and 3567ename:VK_FORMAT_R64_SINT. 3568endif::VK_EXT_shader_image_atomic_int64[] 3569|==== 3570 3571<<< 3572 3573[[formats-mandatory-features-depth-stencil]] 3574.Mandatory format support: depth/stencil with `VkImageType` ename:VK_IMAGE_TYPE_2D 3575[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3576|==== 357713+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 357812+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 357911+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 358010+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 35819+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 35828+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 35837+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 35846+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 35855+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 35864+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 35873+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 35882+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 35891+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3590s| Format 3591| ename:VK_FORMAT_D16_UNORM | {sym1} | {sym1} | | | | | | | {sym1} | | | | 3592| ename:VK_FORMAT_X8_D24_UNORM_PACK32 | | | | | | | | | {sym2} | | | | 3593| ename:VK_FORMAT_D32_SFLOAT | {sym1} | {sym1} | | | | | | | {sym2} | | | | 3594| ename:VK_FORMAT_S8_UINT | | | | | | | | | | | | | 3595| ename:VK_FORMAT_D16_UNORM_S8_UINT | | | | | | | | | | | | | 3596| ename:VK_FORMAT_D24_UNORM_S8_UINT | | | | | | | | | {sym2} | | | | 3597| ename:VK_FORMAT_D32_SFLOAT_S8_UINT | | | | | | | | | {sym2} | | | | 359814+| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT feature must: be 3599supported for at least one of ename:VK_FORMAT_X8_D24_UNORM_PACK32 and 3600ename:VK_FORMAT_D32_SFLOAT, and must: be supported for at least one of 3601ename:VK_FORMAT_D24_UNORM_S8_UINT and ename:VK_FORMAT_D32_SFLOAT_S8_UINT. 3602|==== 3603 3604<<< 3605 3606[[formats-mandatory-features-bcn]] 3607.Mandatory format support: BC compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D and ename:VK_IMAGE_TYPE_3D 3608[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3609|==== 361013+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 361112+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 361211+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 361310+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 36149+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 36158+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 36167+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 36176+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 36185+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 36194+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 36203+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 36212+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 36221+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3623s| Format 3624| ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3625| ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3626| ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3627| ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3628| ename:VK_FORMAT_BC2_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3629| ename:VK_FORMAT_BC2_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3630| ename:VK_FORMAT_BC3_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3631| ename:VK_FORMAT_BC3_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3632| ename:VK_FORMAT_BC4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3633| ename:VK_FORMAT_BC4_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3634| ename:VK_FORMAT_BC5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3635| ename:VK_FORMAT_BC5_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3636| ename:VK_FORMAT_BC6H_UFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3637| ename:VK_FORMAT_BC6H_SFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3638| ename:VK_FORMAT_BC7_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3639| ename:VK_FORMAT_BC7_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 364014+| The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3641ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3642ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3643supported in pname:optimalTilingFeatures for all the formats in at least 3644one of: this table, <<formats-mandatory-features-etc>>, or 3645<<formats-mandatory-features-astc>>. 3646|==== 3647 3648<<< 3649 3650[[formats-mandatory-features-etc]] 3651.Mandatory format support: ETC2 and EAC compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D 3652[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3653|==== 365413+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 365512+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 365611+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 365710+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 36589+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 36598+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 36607+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 36616+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 36625+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 36634+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 36643+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 36652+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 36661+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3667s| Format 3668| ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3669| ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3670| ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3671| ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3672| ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3673| ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3674| ename:VK_FORMAT_EAC_R11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3675| ename:VK_FORMAT_EAC_R11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3676| ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3677| ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 367814+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3679ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3680ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3681supported in pname:optimalTilingFeatures for all the formats in at least 3682one of: this table, <<formats-mandatory-features-bcn>>, or 3683<<formats-mandatory-features-astc>>. 3684|==== 3685 3686<<< 3687 3688[[formats-mandatory-features-astc]] 3689.Mandatory format support: ASTC LDR compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D 3690[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3691|==== 369213+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 369312+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 369411+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 369510+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 36969+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 36978+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 36987+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 36996+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 37005+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 37014+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 37023+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 37032+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 37041+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3705s| Format 3706| ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3707| ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3708| ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3709| ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3710| ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3711| ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3712| ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3713| ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3714| ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3715| ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3716| ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3717| ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3718| ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3719| ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3720| ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3721| ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3722| ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3723| ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3724| ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3725| ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3726| ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3727| ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3728| ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3729| ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3730| ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3731| ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3732| ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3733| ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 373414+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3735ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3736ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3737supported in pname:optimalTilingFeatures for all the formats in at least 3738one of: this table, <<formats-mandatory-features-bcn>>, or 3739<<formats-mandatory-features-etc>>. 3740|==== 3741 3742ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 3743If cubic filtering is supported, 3744ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be 3745supported for the following image view types: 3746 3747 * ename:VK_IMAGE_VIEW_TYPE_2D 3748 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3749 3750for the following formats: 3751 3752 * ename:VK_FORMAT_R4G4_UNORM_PACK8 3753 * ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 3754 * ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 3755 * ename:VK_FORMAT_R5G6B5_UNORM_PACK16 3756 * ename:VK_FORMAT_B5G6R5_UNORM_PACK16 3757 * ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 3758 * ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 3759 * ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 3760 * ename:VK_FORMAT_R8_UNORM 3761 * ename:VK_FORMAT_R8_SNORM 3762 * ename:VK_FORMAT_R8_SRGB 3763 * ename:VK_FORMAT_R8G8_UNORM 3764 * ename:VK_FORMAT_R8G8_SNORM 3765 * ename:VK_FORMAT_R8G8_SRGB 3766 * ename:VK_FORMAT_R8G8B8_UNORM 3767 * ename:VK_FORMAT_R8G8B8_SNORM 3768 * ename:VK_FORMAT_R8G8B8_SRGB 3769 * ename:VK_FORMAT_B8G8R8_UNORM 3770 * ename:VK_FORMAT_B8G8R8_SNORM 3771 * ename:VK_FORMAT_B8G8R8_SRGB 3772 * ename:VK_FORMAT_R8G8B8A8_UNORM 3773 * ename:VK_FORMAT_R8G8B8A8_SNORM 3774 * ename:VK_FORMAT_R8G8B8A8_SRGB 3775 * ename:VK_FORMAT_B8G8R8A8_UNORM 3776 * ename:VK_FORMAT_B8G8R8A8_SNORM 3777 * ename:VK_FORMAT_B8G8R8A8_SRGB 3778 * ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 3779 * ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 3780 * ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 3781 3782If ETC compressed formats are supported, 3783ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be 3784supported for the following image view types: 3785 3786 * ename:VK_IMAGE_VIEW_TYPE_2D 3787 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3788 3789for the following additional formats: 3790 3791 * ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK 3792 * ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK 3793 * ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK 3794 * ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK 3795 * ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK 3796 * ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK 3797 3798If cubic filtering is supported for any other formats, the following image 3799view types must: be supported for those formats: 3800 3801 * ename:VK_IMAGE_VIEW_TYPE_2D 3802 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3803 3804endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 3805 3806ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3807 3808To be used with sname:VkImageView with pname:subresourceRange.aspectMask 3809equal to ename:VK_IMAGE_ASPECT_COLOR_BIT, <<samplers-YCbCr-conversion, 3810sampler {YCbCr} conversion>> must: be enabled for the following formats: 3811 3812[[formats-requiring-sampler-ycbcr-conversion]] 3813.Formats requiring sampler {YCbCr} conversion for ename:VK_IMAGE_ASPECT_COLOR_BIT image views 3814[width="100%",cols="18,^3,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3815|==== 381611+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT .11+^.^| {downarrow} 381710+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT .10+^.^| {downarrow} 38189+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT .9+^.^| {downarrow} 38198+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT .8+^.^| {downarrow} 38207+>| ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT .7+^.^| {downarrow} 38216+>| ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT .6+^.^| {downarrow} 38225+>| ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT .5+^.^| {downarrow} 38234+>| ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT .4+^.^| {downarrow} 38243+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .3+^.^| {downarrow} 38252+>| ename:VK_FORMAT_FEATURE_DISJOINT_BIT .2+^.^| {downarrow} 3826s| Format s| Planes 3827| ename:VK_FORMAT_G8B8G8R8_422_UNORM | 1 | | | | | | | | | | 3828| ename:VK_FORMAT_B8G8R8G8_422_UNORM | 1 | | | | | | | | | | 3829| ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM | 3 | | {sym2} | {sym2} | {sym2} | {sym2} | | | | | 3830| ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM | 2 | | {sym2} | {sym2} | {sym2} | {sym2} | | | | | 3831| ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM | 3 | | | | | | | | | | 3832| ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM | 2 | | | | | | | | | | 3833| ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM | 3 | | | | | | | | | | 3834ifdef::VK_EXT_rgba10x6_formats[] 3835| ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 {sym3} | 1 | | | | | | | | | | 3836endif::VK_EXT_rgba10x6_formats[] 3837ifndef::VK_EXT_rgba10x6_formats[] 3838 | ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 | 1 | | | | | | | | | | 3839endif::VK_EXT_rgba10x6_formats[] 3840| ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3841| ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3842| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 | 3 | | | | | | | | | | 3843| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 | 2 | | | | | | | | | | 3844| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 | 3 | | | | | | | | | | 3845| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 | 2 | | | | | | | | | | 3846| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 | 3 | | | | | | | | | | 3847| ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 | 1 | | | | | | | | | | 3848| ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3849| ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3850| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 | 3 | | | | | | | | | | 3851| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 | 2 | | | | | | | | | | 3852| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 | 3 | | | | | | | | | | 3853| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 | 2 | | | | | | | | | | 3854| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 | 3 | | | | | | | | | | 3855| ename:VK_FORMAT_G16B16G16R16_422_UNORM | 1 | | | | | | | | | | 3856| ename:VK_FORMAT_B16G16R16G16_422_UNORM | 1 | | | | | | | | | | 3857| ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM | 3 | | | | | | | | | | 3858| ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM | 2 | | | | | | | | | | 3859| ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM | 3 | | | | | | | | | | 3860| ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM | 2 | | | | | | | | | | 3861| ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM | 3 | | | | | | | | | | 3862ifdef::VK_EXT_ycbcr_2plane_444_formats[] 3863| ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT | 2 | | | | | | | | | | 3864| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT | 2 | | | | | | | | | | 3865| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT | 2 | | | | | | | | | | 3866| ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT | 2 | | | | | | | | | | 3867endif::VK_EXT_ycbcr_2plane_444_formats[] 386812+| Format features marked {sym2} must: be supported for 3869pname:optimalTilingFeatures with elink:VkImageType 3870ename:VK_IMAGE_TYPE_2D if the sname:VkPhysicalDevice supports the 3871slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures feature. 3872ifdef::VK_EXT_rgba10x6_formats[] 387312+| Formats marked {sym3} do not require a sampler {YCbCr} conversion for 3874ename:VK_IMAGE_ASPECT_COLOR_BIT image views if the 3875slink:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT::pname:formatRgba10x6WithoutYCbCrSampler 3876feature is enabled. 3877endif::VK_EXT_rgba10x6_formats[] 3878|==== 3879 3880Implementations are not required to support the 3881ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, 3882ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or 3883ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT tlink:VkImageCreateFlags for the 3884above formats that require <<samplers-YCbCr-conversion,sampler {YCbCr} 3885conversion>>. 3886To determine whether the implementation supports sparse image creation flags 3887with these formats use flink:vkGetPhysicalDeviceImageFormatProperties or 3888flink:vkGetPhysicalDeviceImageFormatProperties2. 3889 3890endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3891 3892ifdef::VK_EXT_fragment_density_map[] 3893ename:VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT must: be supported for 3894the following formats if the <<features-fragmentDensityMap,fragment density 3895map feature>> is enabled: 3896 3897 * ename:VK_FORMAT_R8G8_UNORM 3898endif::VK_EXT_fragment_density_map[] 3899 3900ifdef::VK_KHR_acceleration_structure[] 3901ename:VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR must: 3902be supported in pname:bufferFeatures for the following formats if the 3903<<features-accelerationStructure, pname:accelerationStructure>> feature is 3904supported: 3905 3906 * ename:VK_FORMAT_R32G32_SFLOAT 3907 * ename:VK_FORMAT_R32G32B32_SFLOAT 3908 * ename:VK_FORMAT_R16G16_SFLOAT 3909 * ename:VK_FORMAT_R16G16B16A16_SFLOAT 3910 * ename:VK_FORMAT_R16G16_SNORM 3911 * ename:VK_FORMAT_R16G16B16A16_SNORM 3912endif::VK_KHR_acceleration_structure[] 3913 3914ifdef::VK_KHR_fragment_shading_rate[] 3915ename:VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR must: be 3916supported for the following formats if the 3917<<features-attachmentFragmentShadingRate, 3918pname:attachmentFragmentShadingRate feature>> is supported: 3919 3920 * ename:VK_FORMAT_R8_UINT 3921endif::VK_KHR_fragment_shading_rate[] 3922 3923 3924[[formats-without-shader-storage-format]] 3925=== Formats without shader storage format 3926 3927The device-level features for using a storage image with an image format of 3928code:Unknown, 3929<<features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>> 3930and 3931<<features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>, 3932only apply to the following formats: 3933 3934 * ename:VK_FORMAT_R8G8B8A8_UNORM 3935 * ename:VK_FORMAT_R8G8B8A8_SNORM 3936 * ename:VK_FORMAT_R8G8B8A8_UINT 3937 * ename:VK_FORMAT_R8G8B8A8_SINT 3938 * ename:VK_FORMAT_R32_UINT 3939 * ename:VK_FORMAT_R32_SINT 3940 * ename:VK_FORMAT_R32_SFLOAT 3941 * ename:VK_FORMAT_R32G32_UINT 3942 * ename:VK_FORMAT_R32G32_SINT 3943 * ename:VK_FORMAT_R32G32_SFLOAT 3944 * ename:VK_FORMAT_R32G32B32A32_UINT 3945 * ename:VK_FORMAT_R32G32B32A32_SINT 3946 * ename:VK_FORMAT_R32G32B32A32_SFLOAT 3947 * ename:VK_FORMAT_R16G16B16A16_UINT 3948 * ename:VK_FORMAT_R16G16B16A16_SINT 3949 * ename:VK_FORMAT_R16G16B16A16_SFLOAT 3950 * ename:VK_FORMAT_R16G16_SFLOAT 3951 * ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 3952 * ename:VK_FORMAT_R16_SFLOAT 3953 * ename:VK_FORMAT_R16G16B16A16_UNORM 3954 * ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 3955 * ename:VK_FORMAT_R16G16_UNORM 3956 * ename:VK_FORMAT_R8G8_UNORM 3957 * ename:VK_FORMAT_R16_UNORM 3958 * ename:VK_FORMAT_R8_UNORM 3959 * ename:VK_FORMAT_R16G16B16A16_SNORM 3960 * ename:VK_FORMAT_R16G16_SNORM 3961 * ename:VK_FORMAT_R8G8_SNORM 3962 * ename:VK_FORMAT_R16_SNORM 3963 * ename:VK_FORMAT_R8_SNORM 3964 * ename:VK_FORMAT_R16G16_SINT 3965 * ename:VK_FORMAT_R8G8_SINT 3966 * ename:VK_FORMAT_R16_SINT 3967 * ename:VK_FORMAT_R8_SINT 3968 * ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 3969 * ename:VK_FORMAT_R16G16_UINT 3970 * ename:VK_FORMAT_R8G8_UINT 3971 * ename:VK_FORMAT_R16_UINT 3972 * ename:VK_FORMAT_R8_UINT 3973 3974[NOTE] 3975.Note 3976==== 3977This list of formats is the union of required storage formats from 3978<<features-required-format-support, Required Format Support>> section and 3979formats listed in <<features-shaderStorageImageExtendedFormats, 3980pname:shaderStorageImageExtendedFormats>>. 3981==== 3982 3983ifdef::VK_KHR_format_feature_flags2[] 3984An implementation that supports ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3985for any format from the given list of formats and supports 3986<<features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>> 3987must: support ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR 3988for that same format if the `apiext:VK_KHR_format_feature_flags2` extension 3989is supported. 3990 3991An implementation that supports ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3992for any format from the given list of formats and supports 3993<<features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>> 3994must: support ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR 3995for that same format if the `apiext:VK_KHR_format_feature_flags2` extension 3996is supported. 3997endif::VK_KHR_format_feature_flags2[] 3998 3999 4000ifdef::VK_KHR_format_feature_flags2[] 4001=== Depth comparison format support 4002 4003If the `apiext:VK_KHR_format_feature_flags2` extension is supported, a 4004depth/stencil format with a depth component supporting 4005ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must: support 4006ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR. 4007 4008endif::VK_KHR_format_feature_flags2[] 4009