1// Copyright 2015-2024 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.adoc[] 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_VERSION_1_3,VK_EXT_4444_formats[] 44 * ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16 specifies a four-component, 16-bit 45 packed unsigned normalized format that has a 4-bit A component in bits 46 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in bits 47 4..7, and a 4-bit B component in bits 0..3. 48 * ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16 specifies a four-component, 16-bit 49 packed unsigned normalized format that has a 4-bit A component in bits 50 12..15, a 4-bit B component in bits 8..11, a 4-bit G component in bits 51 4..7, and a 4-bit R component in bits 0..3. 52endif::VK_VERSION_1_3,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. 73ifdef::VK_KHR_maintenance5[] 74 * ename:VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR specifies a four-component, 75 16-bit packed unsigned normalized format that has a 1-bit A component in 76 bit 15, a 5-bit B component in bits 10..14, a 5-bit G component in bits 77 5..9, and a 5-bit R component in bits 0..4. 78 * ename:VK_FORMAT_A8_UNORM_KHR specifies a one-component, 8-bit unsigned 79 normalized format that has a single 8-bit A component. 80endif::VK_KHR_maintenance5[] 81 * ename:VK_FORMAT_R8_UNORM specifies a one-component, 8-bit unsigned 82 normalized format that has a single 8-bit R component. 83 * ename:VK_FORMAT_R8_SNORM specifies a one-component, 8-bit signed 84 normalized format that has a single 8-bit R component. 85 * ename:VK_FORMAT_R8_USCALED specifies a one-component, 8-bit unsigned 86 scaled integer format that has a single 8-bit R component. 87 * ename:VK_FORMAT_R8_SSCALED specifies a one-component, 8-bit signed 88 scaled integer format that has a single 8-bit R component. 89 * ename:VK_FORMAT_R8_UINT specifies a one-component, 8-bit unsigned 90 integer format that has a single 8-bit R component. 91 * ename:VK_FORMAT_R8_SINT specifies a one-component, 8-bit signed integer 92 format that has a single 8-bit R component. 93 * ename:VK_FORMAT_R8_SRGB specifies a one-component, 8-bit unsigned 94 normalized format that has a single 8-bit R component stored with sRGB 95 nonlinear encoding. 96 * ename:VK_FORMAT_R8G8_UNORM specifies a two-component, 16-bit unsigned 97 normalized format that has an 8-bit R component in byte 0, and an 8-bit 98 G component in byte 1. 99 * ename:VK_FORMAT_R8G8_SNORM specifies a two-component, 16-bit signed 100 normalized format that has an 8-bit R component in byte 0, and an 8-bit 101 G component in byte 1. 102 * ename:VK_FORMAT_R8G8_USCALED specifies a two-component, 16-bit unsigned 103 scaled integer format that has an 8-bit R component in byte 0, and an 104 8-bit G component in byte 1. 105 * ename:VK_FORMAT_R8G8_SSCALED specifies a two-component, 16-bit signed 106 scaled integer format that has an 8-bit R component in byte 0, and an 107 8-bit G component in byte 1. 108 * ename:VK_FORMAT_R8G8_UINT specifies a two-component, 16-bit unsigned 109 integer format that has an 8-bit R component in byte 0, and an 8-bit G 110 component in byte 1. 111 * ename:VK_FORMAT_R8G8_SINT specifies a two-component, 16-bit signed 112 integer format that has an 8-bit R component in byte 0, and an 8-bit G 113 component in byte 1. 114 * ename:VK_FORMAT_R8G8_SRGB specifies a two-component, 16-bit unsigned 115 normalized format that has an 8-bit R component stored with sRGB 116 nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB 117 nonlinear encoding in byte 1. 118 * ename:VK_FORMAT_R8G8B8_UNORM specifies a three-component, 24-bit 119 unsigned normalized format that has an 8-bit R component in byte 0, an 120 8-bit G component in byte 1, and an 8-bit B component in byte 2. 121 * ename:VK_FORMAT_R8G8B8_SNORM specifies a three-component, 24-bit signed 122 normalized format that has an 8-bit R component in byte 0, an 8-bit G 123 component in byte 1, and an 8-bit B component in byte 2. 124 * ename:VK_FORMAT_R8G8B8_USCALED specifies a three-component, 24-bit 125 unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit 126 G component in byte 1, and an 8-bit B component in byte 2. 127 * ename:VK_FORMAT_R8G8B8_SSCALED specifies a three-component, 24-bit 128 signed scaled format that has an 8-bit R component in byte 0, an 8-bit G 129 component in byte 1, and an 8-bit B component in byte 2. 130 * ename:VK_FORMAT_R8G8B8_UINT specifies a three-component, 24-bit unsigned 131 integer format that has an 8-bit R component in byte 0, an 8-bit G 132 component in byte 1, and an 8-bit B component in byte 2. 133 * ename:VK_FORMAT_R8G8B8_SINT specifies a three-component, 24-bit signed 134 integer format that has an 8-bit R component in byte 0, an 8-bit G 135 component in byte 1, and an 8-bit B component in byte 2. 136 * ename:VK_FORMAT_R8G8B8_SRGB specifies a three-component, 24-bit unsigned 137 normalized format that has an 8-bit R component stored with sRGB 138 nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 139 nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB 140 nonlinear encoding in byte 2. 141 * ename:VK_FORMAT_B8G8R8_UNORM specifies a three-component, 24-bit 142 unsigned normalized format that has an 8-bit B component in byte 0, an 143 8-bit G component in byte 1, and an 8-bit R component in byte 2. 144 * ename:VK_FORMAT_B8G8R8_SNORM specifies a three-component, 24-bit signed 145 normalized format that has an 8-bit B component in byte 0, an 8-bit G 146 component in byte 1, and an 8-bit R component in byte 2. 147 * ename:VK_FORMAT_B8G8R8_USCALED specifies a three-component, 24-bit 148 unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit 149 G component in byte 1, and an 8-bit R component in byte 2. 150 * ename:VK_FORMAT_B8G8R8_SSCALED specifies a three-component, 24-bit 151 signed scaled format that has an 8-bit B component in byte 0, an 8-bit G 152 component in byte 1, and an 8-bit R component in byte 2. 153 * ename:VK_FORMAT_B8G8R8_UINT specifies a three-component, 24-bit unsigned 154 integer format that has an 8-bit B component in byte 0, an 8-bit G 155 component in byte 1, and an 8-bit R component in byte 2. 156 * ename:VK_FORMAT_B8G8R8_SINT specifies a three-component, 24-bit signed 157 integer format that has an 8-bit B component in byte 0, an 8-bit G 158 component in byte 1, and an 8-bit R component in byte 2. 159 * ename:VK_FORMAT_B8G8R8_SRGB specifies a three-component, 24-bit unsigned 160 normalized format that has an 8-bit B component stored with sRGB 161 nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 162 nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB 163 nonlinear encoding in byte 2. 164 * ename:VK_FORMAT_R8G8B8A8_UNORM specifies a four-component, 32-bit 165 unsigned normalized format that has an 8-bit R component in byte 0, an 166 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 167 8-bit A component in byte 3. 168 * ename:VK_FORMAT_R8G8B8A8_SNORM specifies a four-component, 32-bit signed 169 normalized 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_USCALED specifies a four-component, 32-bit 173 unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit 174 G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A 175 component in byte 3. 176 * ename:VK_FORMAT_R8G8B8A8_SSCALED specifies a four-component, 32-bit 177 signed scaled 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_UINT specifies a four-component, 32-bit 181 unsigned integer format that has an 8-bit R component in byte 0, an 182 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 183 8-bit A component in byte 3. 184 * ename:VK_FORMAT_R8G8B8A8_SINT specifies a four-component, 32-bit signed 185 integer format that has an 8-bit R component in byte 0, an 8-bit G 186 component in byte 1, an 8-bit B component in byte 2, and an 8-bit A 187 component in byte 3. 188 * ename:VK_FORMAT_R8G8B8A8_SRGB specifies a four-component, 32-bit 189 unsigned normalized format that has an 8-bit R component stored with 190 sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 191 nonlinear encoding in byte 1, an 8-bit B component stored with sRGB 192 nonlinear encoding in byte 2, and an 8-bit A component in byte 3. 193 * ename:VK_FORMAT_B8G8R8A8_UNORM specifies a four-component, 32-bit 194 unsigned normalized format that has an 8-bit B component in byte 0, an 195 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 196 8-bit A component in byte 3. 197 * ename:VK_FORMAT_B8G8R8A8_SNORM specifies a four-component, 32-bit signed 198 normalized 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_USCALED specifies a four-component, 32-bit 202 unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit 203 G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A 204 component in byte 3. 205 * ename:VK_FORMAT_B8G8R8A8_SSCALED specifies a four-component, 32-bit 206 signed scaled 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_UINT specifies a four-component, 32-bit 210 unsigned integer format that has an 8-bit B component in byte 0, an 211 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 212 8-bit A component in byte 3. 213 * ename:VK_FORMAT_B8G8R8A8_SINT specifies a four-component, 32-bit signed 214 integer format that has an 8-bit B component in byte 0, an 8-bit G 215 component in byte 1, an 8-bit R component in byte 2, and an 8-bit A 216 component in byte 3. 217 * ename:VK_FORMAT_B8G8R8A8_SRGB specifies a four-component, 32-bit 218 unsigned normalized format that has an 8-bit B component stored with 219 sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 220 nonlinear encoding in byte 1, an 8-bit R component stored with sRGB 221 nonlinear encoding in byte 2, and an 8-bit A component in byte 3. 222 * ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 specifies a four-component, 32-bit 223 packed unsigned normalized format that has an 8-bit A component in bits 224 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 225 bits 8..15, and an 8-bit R component in bits 0..7. 226 * ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 specifies a four-component, 32-bit 227 packed signed normalized format that has an 8-bit A component in bits 228 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 229 bits 8..15, and an 8-bit R component in bits 0..7. 230 * ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32 specifies a four-component, 231 32-bit packed unsigned scaled integer format that has an 8-bit A 232 component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit 233 G component in bits 8..15, and an 8-bit R component in bits 0..7. 234 * ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32 specifies a four-component, 235 32-bit packed signed scaled integer format that has an 8-bit A component 236 in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G 237 component in bits 8..15, and an 8-bit R component in bits 0..7. 238 * ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 specifies a four-component, 32-bit 239 packed unsigned integer format that has an 8-bit A component in bits 240 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 241 bits 8..15, and an 8-bit R component in bits 0..7. 242 * ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 specifies a four-component, 32-bit 243 packed signed integer format that has an 8-bit A component in bits 244 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 245 bits 8..15, and an 8-bit R component in bits 0..7. 246 * ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 specifies a four-component, 32-bit 247 packed unsigned normalized format that has an 8-bit A component in bits 248 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits 249 16..23, an 8-bit G component stored with sRGB nonlinear encoding in bits 250 8..15, and an 8-bit R component stored with sRGB nonlinear encoding in 251 bits 0..7. 252 * ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32 specifies a four-component, 253 32-bit packed unsigned normalized format that has a 2-bit A component in 254 bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component 255 in bits 10..19, and a 10-bit B component in bits 0..9. 256 * ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32 specifies a four-component, 257 32-bit packed signed normalized format that has a 2-bit A component in 258 bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component 259 in bits 10..19, and a 10-bit B component in bits 0..9. 260 * ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32 specifies a four-component, 261 32-bit packed unsigned scaled integer format that has a 2-bit A 262 component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit 263 G component in bits 10..19, and a 10-bit B component in bits 0..9. 264 * ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32 specifies a four-component, 265 32-bit packed signed scaled integer format that has a 2-bit A component 266 in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G 267 component in bits 10..19, and a 10-bit B component in bits 0..9. 268 * ename:VK_FORMAT_A2R10G10B10_UINT_PACK32 specifies a four-component, 269 32-bit packed unsigned integer format that has a 2-bit A component in 270 bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component 271 in bits 10..19, and a 10-bit B component in bits 0..9. 272 * ename:VK_FORMAT_A2R10G10B10_SINT_PACK32 specifies a four-component, 273 32-bit packed signed integer format that has a 2-bit A component in bits 274 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in 275 bits 10..19, and a 10-bit B component in bits 0..9. 276 * ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 specifies a four-component, 277 32-bit packed unsigned normalized format that has a 2-bit A component in 278 bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component 279 in bits 10..19, and a 10-bit R component in bits 0..9. 280 * ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32 specifies a four-component, 281 32-bit packed signed normalized format that has a 2-bit A component in 282 bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component 283 in bits 10..19, and a 10-bit R component in bits 0..9. 284 * ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32 specifies a four-component, 285 32-bit packed unsigned scaled integer format that has a 2-bit A 286 component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit 287 G component in bits 10..19, and a 10-bit R component in bits 0..9. 288 * ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32 specifies a four-component, 289 32-bit packed signed scaled integer format that has a 2-bit A component 290 in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G 291 component in bits 10..19, and a 10-bit R component in bits 0..9. 292 * ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 specifies a four-component, 293 32-bit packed unsigned integer format that has a 2-bit A component in 294 bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component 295 in bits 10..19, and a 10-bit R component in bits 0..9. 296 * ename:VK_FORMAT_A2B10G10R10_SINT_PACK32 specifies a four-component, 297 32-bit packed signed integer format that has a 2-bit A component in bits 298 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in 299 bits 10..19, and a 10-bit R component in bits 0..9. 300 * ename:VK_FORMAT_R16_UNORM specifies a one-component, 16-bit unsigned 301 normalized format that has a single 16-bit R component. 302 * ename:VK_FORMAT_R16_SNORM specifies a one-component, 16-bit signed 303 normalized format that has a single 16-bit R component. 304 * ename:VK_FORMAT_R16_USCALED specifies a one-component, 16-bit unsigned 305 scaled integer format that has a single 16-bit R component. 306 * ename:VK_FORMAT_R16_SSCALED specifies a one-component, 16-bit signed 307 scaled integer format that has a single 16-bit R component. 308 * ename:VK_FORMAT_R16_UINT specifies a one-component, 16-bit unsigned 309 integer format that has a single 16-bit R component. 310 * ename:VK_FORMAT_R16_SINT specifies a one-component, 16-bit signed 311 integer format that has a single 16-bit R component. 312 * ename:VK_FORMAT_R16_SFLOAT specifies a one-component, 16-bit signed 313 floating-point format that has a single 16-bit R component. 314 * ename:VK_FORMAT_R16G16_UNORM specifies a two-component, 32-bit unsigned 315 normalized format that has a 16-bit R component in bytes 0..1, and a 316 16-bit G component in bytes 2..3. 317 * ename:VK_FORMAT_R16G16_SNORM specifies a two-component, 32-bit signed 318 normalized format that has a 16-bit R component in bytes 0..1, and a 319 16-bit G component in bytes 2..3. 320 * ename:VK_FORMAT_R16G16_USCALED specifies a two-component, 32-bit 321 unsigned scaled integer format that has a 16-bit R component in bytes 322 0..1, and a 16-bit G component in bytes 2..3. 323 * ename:VK_FORMAT_R16G16_SSCALED specifies a two-component, 32-bit signed 324 scaled integer format that has a 16-bit R component in bytes 0..1, and a 325 16-bit G component in bytes 2..3. 326 * ename:VK_FORMAT_R16G16_UINT specifies a two-component, 32-bit unsigned 327 integer format that has a 16-bit R component in bytes 0..1, and a 16-bit 328 G component in bytes 2..3. 329 * ename:VK_FORMAT_R16G16_SINT specifies a two-component, 32-bit signed 330 integer format that has a 16-bit R component in bytes 0..1, and a 16-bit 331 G component in bytes 2..3. 332 * ename:VK_FORMAT_R16G16_SFLOAT specifies a two-component, 32-bit signed 333 floating-point format that has a 16-bit R component in bytes 0..1, and a 334 16-bit G component in bytes 2..3. 335 * ename:VK_FORMAT_R16G16B16_UNORM specifies a three-component, 48-bit 336 unsigned normalized format that has a 16-bit R component in bytes 0..1, 337 a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 338 4..5. 339 * ename:VK_FORMAT_R16G16B16_SNORM specifies a three-component, 48-bit 340 signed normalized format that has a 16-bit R component in bytes 0..1, a 341 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 342 4..5. 343 * ename:VK_FORMAT_R16G16B16_USCALED specifies a three-component, 48-bit 344 unsigned scaled integer format that has a 16-bit R component in bytes 345 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in 346 bytes 4..5. 347 * ename:VK_FORMAT_R16G16B16_SSCALED specifies a three-component, 48-bit 348 signed scaled integer format that has a 16-bit R component in bytes 349 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in 350 bytes 4..5. 351 * ename:VK_FORMAT_R16G16B16_UINT specifies a three-component, 48-bit 352 unsigned integer format that has a 16-bit R component in bytes 0..1, a 353 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 354 4..5. 355 * ename:VK_FORMAT_R16G16B16_SINT specifies a three-component, 48-bit 356 signed integer format that has a 16-bit R component in bytes 0..1, a 357 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 358 4..5. 359 * ename:VK_FORMAT_R16G16B16_SFLOAT specifies a three-component, 48-bit 360 signed floating-point format that has a 16-bit R component in bytes 361 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in 362 bytes 4..5. 363 * ename:VK_FORMAT_R16G16B16A16_UNORM specifies a four-component, 64-bit 364 unsigned normalized format that has a 16-bit R component in bytes 0..1, 365 a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 366 and a 16-bit A component in bytes 6..7. 367 * ename:VK_FORMAT_R16G16B16A16_SNORM specifies a four-component, 64-bit 368 signed normalized format that has a 16-bit R component in bytes 0..1, a 369 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 370 and a 16-bit A component in bytes 6..7. 371 * ename:VK_FORMAT_R16G16B16A16_USCALED specifies a four-component, 64-bit 372 unsigned scaled integer format that has a 16-bit R component in bytes 373 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 374 4..5, and a 16-bit A component in bytes 6..7. 375 * ename:VK_FORMAT_R16G16B16A16_SSCALED specifies a four-component, 64-bit 376 signed scaled integer format that has a 16-bit R component in bytes 377 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 378 4..5, and a 16-bit A component in bytes 6..7. 379 * ename:VK_FORMAT_R16G16B16A16_UINT specifies a four-component, 64-bit 380 unsigned integer format that has a 16-bit R component in bytes 0..1, a 381 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 382 and a 16-bit A component in bytes 6..7. 383 * ename:VK_FORMAT_R16G16B16A16_SINT specifies a four-component, 64-bit 384 signed integer format that has a 16-bit R component in bytes 0..1, a 385 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 386 and a 16-bit A component in bytes 6..7. 387 * ename:VK_FORMAT_R16G16B16A16_SFLOAT specifies a four-component, 64-bit 388 signed floating-point format that has a 16-bit R component in bytes 389 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 390 4..5, and a 16-bit A component in bytes 6..7. 391 * ename:VK_FORMAT_R32_UINT specifies a one-component, 32-bit unsigned 392 integer format that has a single 32-bit R component. 393 * ename:VK_FORMAT_R32_SINT specifies a one-component, 32-bit signed 394 integer format that has a single 32-bit R component. 395 * ename:VK_FORMAT_R32_SFLOAT specifies a one-component, 32-bit signed 396 floating-point format that has a single 32-bit R component. 397 * ename:VK_FORMAT_R32G32_UINT specifies a two-component, 64-bit unsigned 398 integer format that has a 32-bit R component in bytes 0..3, and a 32-bit 399 G component in bytes 4..7. 400 * ename:VK_FORMAT_R32G32_SINT specifies a two-component, 64-bit signed 401 integer format that has a 32-bit R component in bytes 0..3, and a 32-bit 402 G component in bytes 4..7. 403 * ename:VK_FORMAT_R32G32_SFLOAT specifies a two-component, 64-bit signed 404 floating-point format that has a 32-bit R component in bytes 0..3, and a 405 32-bit G component in bytes 4..7. 406 * ename:VK_FORMAT_R32G32B32_UINT specifies a three-component, 96-bit 407 unsigned integer format that has a 32-bit R component in bytes 0..3, a 408 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 409 8..11. 410 * ename:VK_FORMAT_R32G32B32_SINT specifies a three-component, 96-bit 411 signed integer format that has a 32-bit R component in bytes 0..3, a 412 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 413 8..11. 414 * ename:VK_FORMAT_R32G32B32_SFLOAT specifies a three-component, 96-bit 415 signed floating-point format that has a 32-bit R component in bytes 416 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in 417 bytes 8..11. 418 * ename:VK_FORMAT_R32G32B32A32_UINT specifies a four-component, 128-bit 419 unsigned integer format that has a 32-bit R component in bytes 0..3, a 420 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, 421 and a 32-bit A component in bytes 12..15. 422 * ename:VK_FORMAT_R32G32B32A32_SINT specifies a four-component, 128-bit 423 signed integer format that has a 32-bit R component in bytes 0..3, a 424 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, 425 and a 32-bit A component in bytes 12..15. 426 * ename:VK_FORMAT_R32G32B32A32_SFLOAT specifies a four-component, 128-bit 427 signed floating-point format that has a 32-bit R component in bytes 428 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 429 8..11, and a 32-bit A component in bytes 12..15. 430 * ename:VK_FORMAT_R64_UINT specifies a one-component, 64-bit unsigned 431 integer format that has a single 64-bit R component. 432 * ename:VK_FORMAT_R64_SINT specifies a one-component, 64-bit signed 433 integer format that has a single 64-bit R component. 434 * ename:VK_FORMAT_R64_SFLOAT specifies a one-component, 64-bit signed 435 floating-point format that has a single 64-bit R component. 436 * ename:VK_FORMAT_R64G64_UINT specifies a two-component, 128-bit unsigned 437 integer format that has a 64-bit R component in bytes 0..7, and a 64-bit 438 G component in bytes 8..15. 439 * ename:VK_FORMAT_R64G64_SINT specifies a two-component, 128-bit signed 440 integer format that has a 64-bit R component in bytes 0..7, and a 64-bit 441 G component in bytes 8..15. 442 * ename:VK_FORMAT_R64G64_SFLOAT specifies a two-component, 128-bit signed 443 floating-point format that has a 64-bit R component in bytes 0..7, and a 444 64-bit G component in bytes 8..15. 445 * ename:VK_FORMAT_R64G64B64_UINT specifies a three-component, 192-bit 446 unsigned integer format that has a 64-bit R component in bytes 0..7, a 447 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 448 16..23. 449 * ename:VK_FORMAT_R64G64B64_SINT specifies a three-component, 192-bit 450 signed integer format that has a 64-bit R component in bytes 0..7, a 451 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 452 16..23. 453 * ename:VK_FORMAT_R64G64B64_SFLOAT specifies a three-component, 192-bit 454 signed floating-point format that has a 64-bit R component in bytes 455 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in 456 bytes 16..23. 457 * ename:VK_FORMAT_R64G64B64A64_UINT specifies a four-component, 256-bit 458 unsigned integer format that has a 64-bit R component in bytes 0..7, a 459 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, 460 and a 64-bit A component in bytes 24..31. 461 * ename:VK_FORMAT_R64G64B64A64_SINT specifies a four-component, 256-bit 462 signed integer format that has a 64-bit R component in bytes 0..7, a 463 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, 464 and a 64-bit A component in bytes 24..31. 465 * ename:VK_FORMAT_R64G64B64A64_SFLOAT specifies a four-component, 256-bit 466 signed floating-point format that has a 64-bit R component in bytes 467 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 468 16..23, and a 64-bit A component in bytes 24..31. 469 * ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 specifies a three-component, 470 32-bit packed unsigned floating-point format that has a 10-bit B 471 component in bits 22..31, an 11-bit G component in bits 11..21, an 472 11-bit R component in bits 0..10. 473 See <<fundamentals-fp10>> and <<fundamentals-fp11>>. 474 * ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 specifies a three-component, 475 32-bit packed unsigned floating-point format that has a 5-bit shared 476 exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 477 9-bit G component mantissa in bits 9..17, and a 9-bit R component 478 mantissa in bits 0..8. 479 * ename:VK_FORMAT_D16_UNORM specifies a one-component, 16-bit unsigned 480 normalized format that has a single 16-bit depth component. 481 * ename:VK_FORMAT_X8_D24_UNORM_PACK32 specifies a two-component, 32-bit 482 format that has 24 unsigned normalized bits in the depth component and, 483 optionally:, 8 bits that are unused. 484 * ename:VK_FORMAT_D32_SFLOAT specifies a one-component, 32-bit signed 485 floating-point format that has 32 bits in the depth component. 486 * ename:VK_FORMAT_S8_UINT specifies a one-component, 8-bit unsigned 487 integer format that has 8 bits in the stencil component. 488 * ename:VK_FORMAT_D16_UNORM_S8_UINT specifies a two-component, 24-bit 489 format that has 16 unsigned normalized bits in the depth component and 8 490 unsigned integer bits in the stencil component. 491 * ename:VK_FORMAT_D24_UNORM_S8_UINT specifies a two-component, 32-bit 492 packed format that has 8 unsigned integer bits in the stencil component, 493 and 24 unsigned normalized bits in the depth component. 494 * ename:VK_FORMAT_D32_SFLOAT_S8_UINT specifies a two-component format that 495 has 32 signed float bits in the depth component and 8 unsigned integer 496 bits in the stencil component. 497 There are optionally: 24 bits that are unused. 498 * ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK specifies a three-component, 499 block-compressed format where each 64-bit compressed texel block encodes 500 a 4{times}4 rectangle of unsigned normalized RGB texel data. 501 This format has no alpha and is considered opaque. 502 * ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK specifies a three-component, 503 block-compressed format where each 64-bit compressed texel block encodes 504 a 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 505 nonlinear encoding. 506 This format has no alpha and is considered opaque. 507 * ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK specifies a four-component, 508 block-compressed format where each 64-bit compressed texel block encodes 509 a 4{times}4 rectangle of unsigned normalized RGB texel data, and 510 provides 1 bit of alpha. 511 * ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK specifies a four-component, 512 block-compressed format where each 64-bit compressed texel block encodes 513 a 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 514 nonlinear encoding, and provides 1 bit of alpha. 515 * ename:VK_FORMAT_BC2_UNORM_BLOCK specifies a four-component, 516 block-compressed format where each 128-bit compressed texel block 517 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 518 with the first 64 bits encoding alpha values followed by 64 bits 519 encoding RGB values. 520 * ename:VK_FORMAT_BC2_SRGB_BLOCK specifies a four-component, 521 block-compressed format where each 128-bit compressed texel block 522 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 523 with the first 64 bits encoding alpha values followed by 64 bits 524 encoding RGB values with sRGB nonlinear encoding. 525 * ename:VK_FORMAT_BC3_UNORM_BLOCK specifies a four-component, 526 block-compressed format where each 128-bit compressed texel block 527 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 528 with the first 64 bits encoding alpha values followed by 64 bits 529 encoding RGB values. 530 * ename:VK_FORMAT_BC3_SRGB_BLOCK specifies a four-component, 531 block-compressed format where each 128-bit compressed texel block 532 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 533 with the first 64 bits encoding alpha values followed by 64 bits 534 encoding RGB values with sRGB nonlinear encoding. 535 * ename:VK_FORMAT_BC4_UNORM_BLOCK specifies a one-component, 536 block-compressed format where each 64-bit compressed texel block encodes 537 a 4{times}4 rectangle of unsigned normalized red texel data. 538 * ename:VK_FORMAT_BC4_SNORM_BLOCK specifies a one-component, 539 block-compressed format where each 64-bit compressed texel block encodes 540 a 4{times}4 rectangle of signed normalized red texel data. 541 * ename:VK_FORMAT_BC5_UNORM_BLOCK specifies a two-component, 542 block-compressed format where each 128-bit compressed texel block 543 encodes a 4{times}4 rectangle of unsigned normalized RG texel data with 544 the first 64 bits encoding red values followed by 64 bits encoding green 545 values. 546 * ename:VK_FORMAT_BC5_SNORM_BLOCK specifies a two-component, 547 block-compressed format where each 128-bit compressed texel block 548 encodes a 4{times}4 rectangle of signed normalized RG texel data with 549 the first 64 bits encoding red values followed by 64 bits encoding green 550 values. 551 * ename:VK_FORMAT_BC6H_UFLOAT_BLOCK specifies a three-component, 552 block-compressed format where each 128-bit compressed texel block 553 encodes a 4{times}4 rectangle of unsigned floating-point RGB texel data. 554 * ename:VK_FORMAT_BC6H_SFLOAT_BLOCK specifies a three-component, 555 block-compressed format where each 128-bit compressed texel block 556 encodes a 4{times}4 rectangle of signed floating-point RGB texel data. 557 * ename:VK_FORMAT_BC7_UNORM_BLOCK specifies a four-component, 558 block-compressed format where each 128-bit compressed texel block 559 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data. 560 * ename:VK_FORMAT_BC7_SRGB_BLOCK specifies a four-component, 561 block-compressed format where each 128-bit compressed texel block 562 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 563 with sRGB nonlinear encoding applied to the RGB components. 564 * ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK specifies a three-component, 565 ETC2 compressed format where each 64-bit compressed texel block encodes 566 a 4{times}4 rectangle of unsigned normalized RGB texel data. 567 This format has no alpha and is considered opaque. 568 * ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK specifies a three-component, ETC2 569 compressed format where each 64-bit compressed texel block encodes a 570 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 571 nonlinear encoding. 572 This format has no alpha and is considered opaque. 573 * ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK specifies a four-component, 574 ETC2 compressed format where each 64-bit compressed texel block encodes 575 a 4{times}4 rectangle of unsigned normalized RGB texel data, and 576 provides 1 bit of alpha. 577 * ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK specifies a four-component, 578 ETC2 compressed format where each 64-bit compressed texel block encodes 579 a 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 580 nonlinear encoding, and provides 1 bit of alpha. 581 * ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK specifies a four-component, 582 ETC2 compressed format where each 128-bit compressed texel block encodes 583 a 4{times}4 rectangle of unsigned normalized RGBA texel data with the 584 first 64 bits encoding alpha values followed by 64 bits encoding RGB 585 values. 586 * ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK specifies a four-component, 587 ETC2 compressed format where each 128-bit compressed texel block encodes 588 a 4{times}4 rectangle of unsigned normalized RGBA texel data with the 589 first 64 bits encoding alpha values followed by 64 bits encoding RGB 590 values with sRGB nonlinear encoding applied. 591 * ename:VK_FORMAT_EAC_R11_UNORM_BLOCK specifies a one-component, ETC2 592 compressed format where each 64-bit compressed texel block encodes a 593 4{times}4 rectangle of unsigned normalized red texel data. 594 * ename:VK_FORMAT_EAC_R11_SNORM_BLOCK specifies a one-component, ETC2 595 compressed format where each 64-bit compressed texel block encodes a 596 4{times}4 rectangle of signed normalized red texel data. 597 * ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK specifies a two-component, ETC2 598 compressed format where each 128-bit compressed texel block encodes a 599 4{times}4 rectangle of unsigned normalized RG texel data with the first 600 64 bits encoding red values followed by 64 bits encoding green values. 601 * ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK specifies a two-component, ETC2 602 compressed format where each 128-bit compressed texel block encodes a 603 4{times}4 rectangle of signed normalized RG texel data with the first 64 604 bits encoding red values followed by 64 bits encoding green values. 605 * ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK specifies a four-component, ASTC 606 compressed format where each 128-bit compressed texel block encodes a 607 4{times}4 rectangle of unsigned normalized RGBA texel data. 608 * ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK specifies a four-component, ASTC 609 compressed format where each 128-bit compressed texel block encodes a 610 4{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 611 nonlinear encoding applied to the RGB components. 612ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 613 * ename:VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK specifies a four-component, ASTC 614 compressed format where each 128-bit compressed texel block encodes a 615 4{times}4 rectangle of signed floating-point RGBA texel data. 616endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 617 * ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK specifies a four-component, ASTC 618 compressed format where each 128-bit compressed texel block encodes a 619 5{times}4 rectangle of unsigned normalized RGBA texel data. 620 * ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK specifies a four-component, ASTC 621 compressed format where each 128-bit compressed texel block encodes a 622 5{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 623 nonlinear encoding applied to the RGB components. 624ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 625 * ename:VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK specifies a four-component, ASTC 626 compressed format where each 128-bit compressed texel block encodes a 627 5{times}4 rectangle of signed floating-point RGBA texel data. 628endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 629 * ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK specifies a four-component, ASTC 630 compressed format where each 128-bit compressed texel block encodes a 631 5{times}5 rectangle of unsigned normalized RGBA texel data. 632 * ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK specifies a four-component, ASTC 633 compressed format where each 128-bit compressed texel block encodes a 634 5{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 635 nonlinear encoding applied to the RGB components. 636ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 637 * ename:VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK specifies a four-component, ASTC 638 compressed format where each 128-bit compressed texel block encodes a 639 5{times}5 rectangle of signed floating-point RGBA texel data. 640endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 641 * ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK specifies a four-component, ASTC 642 compressed format where each 128-bit compressed texel block encodes a 643 6{times}5 rectangle of unsigned normalized RGBA texel data. 644 * ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK specifies a four-component, ASTC 645 compressed format where each 128-bit compressed texel block encodes a 646 6{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 647 nonlinear encoding applied to the RGB components. 648ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 649 * ename:VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK specifies a four-component, ASTC 650 compressed format where each 128-bit compressed texel block encodes a 651 6{times}5 rectangle of signed floating-point RGBA texel data. 652endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 653 * ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK specifies a four-component, ASTC 654 compressed format where each 128-bit compressed texel block encodes a 655 6{times}6 rectangle of unsigned normalized RGBA texel data. 656 * ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK specifies a four-component, ASTC 657 compressed format where each 128-bit compressed texel block encodes a 658 6{times}6 rectangle of unsigned normalized RGBA texel data with sRGB 659 nonlinear encoding applied to the RGB components. 660ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 661 * ename:VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK specifies a four-component, ASTC 662 compressed format where each 128-bit compressed texel block encodes a 663 6{times}6 rectangle of signed floating-point RGBA texel data. 664endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 665 * ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK specifies a four-component, ASTC 666 compressed format where each 128-bit compressed texel block encodes an 667 8{times}5 rectangle of unsigned normalized RGBA texel data. 668 * ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK specifies a four-component, ASTC 669 compressed format where each 128-bit compressed texel block encodes an 670 8{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 671 nonlinear encoding applied to the RGB components. 672ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 673 * ename:VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK specifies a four-component, ASTC 674 compressed format where each 128-bit compressed texel block encodes a 675 8{times}5 rectangle of signed floating-point RGBA texel data. 676endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 677 * ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK specifies a four-component, ASTC 678 compressed format where each 128-bit compressed texel block encodes an 679 8{times}6 rectangle of unsigned normalized RGBA texel data. 680 * ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK specifies a four-component, ASTC 681 compressed format where each 128-bit compressed texel block encodes an 682 8{times}6 rectangle of unsigned normalized RGBA texel data with sRGB 683 nonlinear encoding applied to the RGB components. 684ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 685 * ename:VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK specifies a four-component, ASTC 686 compressed format where each 128-bit compressed texel block encodes a 687 8{times}6 rectangle of signed floating-point RGBA texel data. 688endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 689 * ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK specifies a four-component, ASTC 690 compressed format where each 128-bit compressed texel block encodes an 691 8{times}8 rectangle of unsigned normalized RGBA texel data. 692 * ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK specifies a four-component, ASTC 693 compressed format where each 128-bit compressed texel block encodes an 694 8{times}8 rectangle of unsigned normalized RGBA texel data with sRGB 695 nonlinear encoding applied to the RGB components. 696ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 697 * ename:VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK specifies a four-component, ASTC 698 compressed format where each 128-bit compressed texel block encodes a 699 8{times}8 rectangle of signed floating-point RGBA texel data. 700endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 701 * ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK specifies a four-component, ASTC 702 compressed format where each 128-bit compressed texel block encodes a 703 10{times}5 rectangle of unsigned normalized RGBA texel data. 704 * ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK specifies a four-component, ASTC 705 compressed format where each 128-bit compressed texel block encodes a 706 10{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 707 nonlinear encoding applied to the RGB components. 708ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 709 * ename:VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK specifies a four-component, ASTC 710 compressed format where each 128-bit compressed texel block encodes a 711 10{times}5 rectangle of signed floating-point RGBA texel data. 712endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 713 * ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK specifies a four-component, ASTC 714 compressed format where each 128-bit compressed texel block encodes a 715 10{times}6 rectangle of unsigned normalized RGBA texel data. 716 * ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK specifies a four-component, ASTC 717 compressed format where each 128-bit compressed texel block encodes a 718 10{times}6 rectangle of unsigned normalized RGBA texel data with sRGB 719 nonlinear encoding applied to the RGB components. 720ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 721 * ename:VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK specifies a four-component, ASTC 722 compressed format where each 128-bit compressed texel block encodes a 723 10{times}6 rectangle of signed floating-point RGBA texel data. 724endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 725 * ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK specifies a four-component, ASTC 726 compressed format where each 128-bit compressed texel block encodes a 727 10{times}8 rectangle of unsigned normalized RGBA texel data. 728 * ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK specifies a four-component, ASTC 729 compressed format where each 128-bit compressed texel block encodes a 730 10{times}8 rectangle of unsigned normalized RGBA texel data with sRGB 731 nonlinear encoding applied to the RGB components. 732ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 733 * ename:VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK specifies a four-component, ASTC 734 compressed format where each 128-bit compressed texel block encodes a 735 10{times}8 rectangle of signed floating-point RGBA texel data. 736endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 737 * ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK specifies a four-component, ASTC 738 compressed format where each 128-bit compressed texel block encodes a 739 10{times}10 rectangle of unsigned normalized RGBA texel data. 740 * ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK specifies a four-component, ASTC 741 compressed format where each 128-bit compressed texel block encodes a 742 10{times}10 rectangle of unsigned normalized RGBA texel data with sRGB 743 nonlinear encoding applied to the RGB components. 744ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 745 * ename:VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK specifies a four-component, ASTC 746 compressed format where each 128-bit compressed texel block encodes a 747 10{times}10 rectangle of signed floating-point RGBA texel data. 748endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 749 * ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK specifies a four-component, ASTC 750 compressed format where each 128-bit compressed texel block encodes a 751 12{times}10 rectangle of unsigned normalized RGBA texel data. 752 * ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK specifies a four-component, ASTC 753 compressed format where each 128-bit compressed texel block encodes a 754 12{times}10 rectangle of unsigned normalized RGBA texel data with sRGB 755 nonlinear encoding applied to the RGB components. 756ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 757 * ename:VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK specifies a four-component, ASTC 758 compressed format where each 128-bit compressed texel block encodes a 759 12{times}10 rectangle of signed floating-point RGBA texel data. 760endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 761 * ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK specifies a four-component, ASTC 762 compressed format where each 128-bit compressed texel block encodes a 763 12{times}12 rectangle of unsigned normalized RGBA texel data. 764 * ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK specifies a four-component, ASTC 765 compressed format where each 128-bit compressed texel block encodes a 766 12{times}12 rectangle of unsigned normalized RGBA texel data with sRGB 767 nonlinear encoding applied to the RGB components. 768ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 769 * ename:VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK specifies a four-component, ASTC 770 compressed format where each 128-bit compressed texel block encodes a 771 12{times}12 rectangle of signed floating-point RGBA texel data. 772endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[] 773ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 774 * ename:VK_FORMAT_G8B8G8R8_422_UNORM specifies a four-component, 32-bit 775 format containing a pair of G components, an R component, and a B 776 component, collectively encoding a 2{times}1 rectangle of unsigned 777 normalized RGB texel data. 778 One G value is present at each _i_ coordinate, with the B and R values 779 shared across both G values and thus recorded at half the horizontal 780 resolution of the image. 781 This format has an 8-bit G component for the even _i_ coordinate in byte 782 0, an 8-bit B component in byte 1, an 8-bit G component for the odd _i_ 783 coordinate in byte 2, and an 8-bit R component in byte 3. 784 This format only supports images with a width that is a multiple of two. 785 For the purposes of the constraints on copy extents, this format is 786 treated as a compressed format with a 2{times}1 compressed texel block. 787 * ename:VK_FORMAT_B8G8R8G8_422_UNORM specifies a four-component, 32-bit 788 format containing a pair of G components, an R component, and a B 789 component, collectively encoding a 2{times}1 rectangle of unsigned 790 normalized RGB texel data. 791 One G value is present at each _i_ coordinate, with the B and R values 792 shared across both G values and thus recorded at half the horizontal 793 resolution of the image. 794 This format has an 8-bit B component in byte 0, an 8-bit G component for 795 the even _i_ coordinate in byte 1, an 8-bit R component in byte 2, and 796 an 8-bit G component for the odd _i_ coordinate in byte 3. 797 This format only supports images with a width that is a multiple of two. 798 For the purposes of the constraints on copy extents, this format is 799 treated as a compressed format with a 2{times}1 compressed texel block. 800 * ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM specifies an unsigned 801 normalized _multi-planar format_ that has an 8-bit G component in plane 802 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. 803 The horizontal and vertical dimensions of the R and B planes are halved 804 relative to the image dimensions, and each R and B component is shared 805 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 806 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 807 \right\rfloor = j_B = j_R]. 808 The location of each plane when this image is in linear layout can be 809 determined via flink:vkGetImageSubresourceLayout, using 810 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 811 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 812 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 813 This format only supports images with a width and height that is a 814 multiple of two. 815 * ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM specifies an unsigned 816 normalized _multi-planar format_ that has an 8-bit G component in plane 817 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B 818 component in byte 0 and an 8-bit R component in byte 1. 819 The horizontal and vertical dimensions of the BR plane are halved 820 relative to the image dimensions, and each R and B value is shared with 821 the G components for which latexmath:[\left\lfloor i_G \times 0.5 822 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 823 \right\rfloor = j_B = j_R]. 824 The location of each plane when this image is in linear layout can be 825 determined via flink:vkGetImageSubresourceLayout, using 826 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 827 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 828 This format only supports images with a width and height that is a 829 multiple of two. 830 * ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM specifies an unsigned 831 normalized _multi-planar format_ that has an 8-bit G component in plane 832 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. 833 The horizontal dimension of the R and B plane is halved relative to the 834 image dimensions, and each R and B value is shared with the G components 835 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 836 i_R]. 837 The location of each plane when this image is in linear layout can be 838 determined via flink:vkGetImageSubresourceLayout, using 839 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 840 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 841 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 842 This format only supports images with a width that is a multiple of two. 843 * ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM specifies an unsigned 844 normalized _multi-planar format_ that has an 8-bit G component in plane 845 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B 846 component in byte 0 and an 8-bit R component in byte 1. 847 The horizontal dimension of the BR plane is halved relative to the image 848 dimensions, and each R and B value is shared with the G components for 849 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 850 The location of each plane when this image is in linear layout can be 851 determined via flink:vkGetImageSubresourceLayout, using 852 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 853 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 854 This format only supports images with a width that is a multiple of two. 855 * ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM specifies an unsigned 856 normalized _multi-planar format_ that has an 8-bit G component in plane 857 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. 858 Each plane has the same dimensions and each R, G and B component 859 contributes to a single texel. 860 The location of each plane when this image is in linear layout can be 861 determined via flink:vkGetImageSubresourceLayout, using 862 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 863 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 864 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 865 * ename:VK_FORMAT_R10X6_UNORM_PACK16 specifies a one-component, 16-bit 866 unsigned normalized format that has a single 10-bit R component in the 867 top 10 bits of a 16-bit word, with the bottom 6 bits unused. 868 * ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 specifies a two-component, 869 32-bit unsigned normalized format that has a 10-bit R component in the 870 top 10 bits of the word in bytes 0..1, and a 10-bit G component in the 871 top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each 872 word unused. 873 * ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 specifies a 874 four-component, 64-bit unsigned normalized format that has a 10-bit R 875 component in the top 10 bits of the word in bytes 0..1, a 10-bit G 876 component in the top 10 bits of the word in bytes 2..3, a 10-bit B 877 component in the top 10 bits of the word in bytes 4..5, and a 10-bit A 878 component in the top 10 bits of the word in bytes 6..7, with the bottom 879 6 bits of each word unused. 880 * ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 specifies a 881 four-component, 64-bit format containing a pair of G components, an R 882 component, and a B component, collectively encoding a 2{times}1 883 rectangle of unsigned normalized RGB texel data. 884 One G value is present at each _i_ coordinate, with the B and R values 885 shared across both G values and thus recorded at half the horizontal 886 resolution of the image. 887 This format has a 10-bit G component for the even _i_ coordinate in the 888 top 10 bits of the word in bytes 0..1, a 10-bit B component in the top 889 10 bits of the word in bytes 2..3, a 10-bit G component for the odd _i_ 890 coordinate in the top 10 bits of the word in bytes 4..5, and a 10-bit R 891 component in the top 10 bits of the word in bytes 6..7, with the bottom 892 6 bits of each word unused. 893 This format only supports images with a width that is a multiple of two. 894 For the purposes of the constraints on copy extents, this format is 895 treated as a compressed format with a 2{times}1 compressed texel block. 896 * ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 specifies a 897 four-component, 64-bit format containing a pair of G components, an R 898 component, and a B component, collectively encoding a 2{times}1 899 rectangle of unsigned normalized RGB texel data. 900 One G value is present at each _i_ coordinate, with the B and R values 901 shared across both G values and thus recorded at half the horizontal 902 resolution of the image. 903 This format has a 10-bit B component in the top 10 bits of the word in 904 bytes 0..1, a 10-bit G component for the even _i_ coordinate in the top 905 10 bits of the word in bytes 2..3, a 10-bit R component in the top 10 906 bits of the word in bytes 4..5, and a 10-bit G component for the odd _i_ 907 coordinate in the top 10 bits of the word in bytes 6..7, with the bottom 908 6 bits of each word unused. 909 This format only supports images with a width that is a multiple of two. 910 For the purposes of the constraints on copy extents, this format is 911 treated as a compressed format with a 2{times}1 compressed texel block. 912 * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 specifies an 913 unsigned normalized _multi-planar format_ that has a 10-bit G component 914 in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component 915 in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R 916 component in the top 10 bits of each 16-bit word of plane 2, with the 917 bottom 6 bits of each word unused. 918 The horizontal and vertical dimensions of the R and B planes are halved 919 relative to the image dimensions, and each R and B component is shared 920 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 921 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 922 \right\rfloor = j_B = j_R]. 923 The location of each plane when this image is in linear layout can be 924 determined via flink:vkGetImageSubresourceLayout, using 925 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 926 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 927 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 928 This format only supports images with a width and height that is a 929 multiple of two. 930 * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 specifies an 931 unsigned normalized _multi-planar format_ that has a 10-bit G component 932 in the top 10 bits of each 16-bit word of plane 0, and a two-component, 933 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits 934 of the word in bytes 0..1, and a 10-bit R component in the top 10 bits 935 of the word in bytes 2..3, with the bottom 6 bits of each word unused. 936 The horizontal and vertical dimensions of the BR plane are halved 937 relative to the image dimensions, and each R and B value is shared with 938 the G components for which latexmath:[\left\lfloor i_G \times 0.5 939 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 940 \right\rfloor = j_B = j_R]. 941 The location of each plane when this image is in linear layout can be 942 determined via flink:vkGetImageSubresourceLayout, using 943 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 944 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 945 This format only supports images with a width and height that is a 946 multiple of two. 947 * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 specifies an 948 unsigned normalized _multi-planar format_ that has a 10-bit G component 949 in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component 950 in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R 951 component in the top 10 bits of each 16-bit word of plane 2, with the 952 bottom 6 bits of each word unused. 953 The horizontal dimension of the R and B plane is halved relative to the 954 image dimensions, and each R and B value is shared with the G components 955 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 956 i_R]. 957 The location of each plane when this image is in linear layout can be 958 determined via flink:vkGetImageSubresourceLayout, using 959 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 960 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 961 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 962 This format only supports images with a width that is a multiple of two. 963 * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 specifies an 964 unsigned normalized _multi-planar format_ that has a 10-bit G component 965 in the top 10 bits of each 16-bit word of plane 0, and a two-component, 966 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits 967 of the word in bytes 0..1, and a 10-bit R component in the top 10 bits 968 of the word in bytes 2..3, with the bottom 6 bits of each word unused. 969 The horizontal dimension of the BR plane is halved relative to the image 970 dimensions, and each R and B value is shared with the G components for 971 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 972 The location of each plane when this image is in linear layout can be 973 determined via flink:vkGetImageSubresourceLayout, using 974 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 975 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 976 This format only supports images with a width that is a multiple of two. 977 * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 specifies an 978 unsigned normalized _multi-planar format_ that has a 10-bit G component 979 in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component 980 in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R 981 component in the top 10 bits of each 16-bit word of plane 2, with the 982 bottom 6 bits of each word unused. 983 Each plane has the same dimensions and each R, G and B component 984 contributes to a single texel. 985 The location of each plane when this image is in linear layout can be 986 determined via flink:vkGetImageSubresourceLayout, using 987 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 988 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 989 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 990 * ename:VK_FORMAT_R12X4_UNORM_PACK16 specifies a one-component, 16-bit 991 unsigned normalized format that has a single 12-bit R component in the 992 top 12 bits of a 16-bit word, with the bottom 4 bits unused. 993 * ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 specifies a two-component, 994 32-bit unsigned normalized format that has a 12-bit R component in the 995 top 12 bits of the word in bytes 0..1, and a 12-bit G component in the 996 top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each 997 word unused. 998 * ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 specifies a 999 four-component, 64-bit unsigned normalized format that has a 12-bit R 1000 component in the top 12 bits of the word in bytes 0..1, a 12-bit G 1001 component in the top 12 bits of the word in bytes 2..3, a 12-bit B 1002 component in the top 12 bits of the word in bytes 4..5, and a 12-bit A 1003 component in the top 12 bits of the word in bytes 6..7, with the bottom 1004 4 bits of each word unused. 1005 * ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 specifies a 1006 four-component, 64-bit format containing a pair of G components, an R 1007 component, and a B component, collectively encoding a 2{times}1 1008 rectangle of unsigned normalized RGB texel data. 1009 One G value is present at each _i_ coordinate, with the B and R values 1010 shared across both G values and thus recorded at half the horizontal 1011 resolution of the image. 1012 This format has a 12-bit G component for the even _i_ coordinate in the 1013 top 12 bits of the word in bytes 0..1, a 12-bit B component in the top 1014 12 bits of the word in bytes 2..3, a 12-bit G component for the odd _i_ 1015 coordinate in the top 12 bits of the word in bytes 4..5, and a 12-bit R 1016 component in the top 12 bits of the word in bytes 6..7, with the bottom 1017 4 bits of each word unused. 1018 This format only supports images with a width that is a multiple of two. 1019 For the purposes of the constraints on copy extents, this format is 1020 treated as a compressed format with a 2{times}1 compressed texel block. 1021 * ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 specifies a 1022 four-component, 64-bit format containing a pair of G components, an R 1023 component, and a B component, collectively encoding a 2{times}1 1024 rectangle of unsigned normalized RGB texel data. 1025 One G value is present at each _i_ coordinate, with the B and R values 1026 shared across both G values and thus recorded at half the horizontal 1027 resolution of the image. 1028 This format has a 12-bit B component in the top 12 bits of the word in 1029 bytes 0..1, a 12-bit G component for the even _i_ coordinate in the top 1030 12 bits of the word in bytes 2..3, a 12-bit R component in the top 12 1031 bits of the word in bytes 4..5, and a 12-bit G component for the odd _i_ 1032 coordinate in the top 12 bits of the word in bytes 6..7, with the bottom 1033 4 bits of each word unused. 1034 This format only supports images with a width that is a multiple of two. 1035 For the purposes of the constraints on copy extents, this format is 1036 treated as a compressed format with a 2{times}1 compressed texel block. 1037 * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 specifies an 1038 unsigned normalized _multi-planar format_ that has a 12-bit G component 1039 in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component 1040 in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R 1041 component in the top 12 bits of each 16-bit word of plane 2, with the 1042 bottom 4 bits of each word unused. 1043 The horizontal and vertical dimensions of the R and B planes are halved 1044 relative to the image dimensions, and each R and B component is shared 1045 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 1046 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1047 \right\rfloor = j_B = j_R]. 1048 The location of each plane when this image is in linear layout can be 1049 determined via flink:vkGetImageSubresourceLayout, using 1050 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1051 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1052 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1053 This format only supports images with a width and height that is a 1054 multiple of two. 1055 * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 specifies an 1056 unsigned normalized _multi-planar format_ that has a 12-bit G component 1057 in the top 12 bits of each 16-bit word of plane 0, and a two-component, 1058 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits 1059 of the word in bytes 0..1, and a 12-bit R component in the top 12 bits 1060 of the word in bytes 2..3, with the bottom 4 bits of each word unused. 1061 The horizontal and vertical dimensions of the BR plane are halved 1062 relative to the image dimensions, and each R and B value is shared with 1063 the G components for which latexmath:[\left\lfloor i_G \times 0.5 1064 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1065 \right\rfloor = j_B = j_R]. 1066 The location of each plane when this image is in linear layout can be 1067 determined via flink:vkGetImageSubresourceLayout, using 1068 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1069 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1070 This format only supports images with a width and height that is a 1071 multiple of two. 1072 * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 specifies an 1073 unsigned normalized _multi-planar format_ that has a 12-bit G component 1074 in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component 1075 in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R 1076 component in the top 12 bits of each 16-bit word of plane 2, with the 1077 bottom 4 bits of each word unused. 1078 The horizontal dimension of the R and B plane is halved relative to the 1079 image dimensions, and each R and B value is shared with the G components 1080 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 1081 i_R]. 1082 The location of each plane when this image is in linear layout can be 1083 determined via flink:vkGetImageSubresourceLayout, using 1084 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1085 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1086 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1087 This format only supports images with a width that is a multiple of two. 1088 * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 specifies an 1089 unsigned normalized _multi-planar format_ that has a 12-bit G component 1090 in the top 12 bits of each 16-bit word of plane 0, and a two-component, 1091 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits 1092 of the word in bytes 0..1, and a 12-bit R component in the top 12 bits 1093 of the word in bytes 2..3, with the bottom 4 bits of each word unused. 1094 The horizontal dimension of the BR plane is halved relative to the image 1095 dimensions, and each R and B value is shared with the G components for 1096 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 1097 The location of each plane when this image is in linear layout can be 1098 determined via flink:vkGetImageSubresourceLayout, using 1099 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1100 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1101 This format only supports images with a width that is a multiple of two. 1102 * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 specifies an 1103 unsigned normalized _multi-planar format_ that has a 12-bit G component 1104 in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component 1105 in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R 1106 component in the top 12 bits of each 16-bit word of plane 2, with the 1107 bottom 4 bits of each word unused. 1108 Each plane has the same dimensions and each R, G and B component 1109 contributes to a single texel. 1110 The location of each plane when this image is in linear layout can be 1111 determined via flink:vkGetImageSubresourceLayout, using 1112 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1113 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1114 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1115 * ename:VK_FORMAT_G16B16G16R16_422_UNORM specifies a four-component, 1116 64-bit format containing a pair of G components, an R component, and a B 1117 component, collectively encoding a 2{times}1 rectangle of unsigned 1118 normalized RGB texel data. 1119 One G value is present at each _i_ coordinate, with the B and R values 1120 shared across both G values and thus recorded at half the horizontal 1121 resolution of the image. 1122 This format has a 16-bit G component for the even _i_ coordinate in the 1123 word in bytes 0..1, a 16-bit B component in the word in bytes 2..3, a 1124 16-bit G component for the odd _i_ coordinate in the word in bytes 4..5, 1125 and a 16-bit R component in the word in bytes 6..7. 1126 This format only supports images with a width that is a multiple of two. 1127 For the purposes of the constraints on copy extents, this format is 1128 treated as a compressed format with a 2{times}1 compressed texel block. 1129 * ename:VK_FORMAT_B16G16R16G16_422_UNORM specifies a four-component, 1130 64-bit format containing a pair of G components, an R component, and a B 1131 component, collectively encoding a 2{times}1 rectangle of unsigned 1132 normalized RGB texel data. 1133 One G value is present at each _i_ coordinate, with the B and R values 1134 shared across both G values and thus recorded at half the horizontal 1135 resolution of the image. 1136 This format has a 16-bit B component in the word in bytes 0..1, a 16-bit 1137 G component for the even _i_ coordinate in the word in bytes 2..3, a 1138 16-bit R component in the word in bytes 4..5, and a 16-bit G component 1139 for the odd _i_ coordinate in the word in bytes 6..7. 1140 This format only supports images with a width that is a multiple of two. 1141 For the purposes of the constraints on copy extents, this format is 1142 treated as a compressed format with a 2{times}1 compressed texel block. 1143 * ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM specifies an unsigned 1144 normalized _multi-planar format_ that has a 16-bit G component in each 1145 16-bit word of plane 0, a 16-bit B component in each 16-bit word of 1146 plane 1, and a 16-bit R component in each 16-bit word of plane 2. 1147 The horizontal and vertical dimensions of the R and B planes are halved 1148 relative to the image dimensions, and each R and B component is shared 1149 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 1150 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1151 \right\rfloor = j_B = j_R]. 1152 The location of each plane when this image is in linear layout can be 1153 determined via flink:vkGetImageSubresourceLayout, using 1154 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1155 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1156 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1157 This format only supports images with a width and height that is a 1158 multiple of two. 1159 * ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM specifies an unsigned 1160 normalized _multi-planar format_ that has a 16-bit G component in each 1161 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 1162 consisting of a 16-bit B component in the word in bytes 0..1, and a 1163 16-bit R component in the word in bytes 2..3. 1164 The horizontal and vertical dimensions of the BR plane are halved 1165 relative to the image dimensions, and each R and B value is shared with 1166 the G components for which latexmath:[\left\lfloor i_G \times 0.5 1167 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1168 \right\rfloor = j_B = j_R]. 1169 The location of each plane when this image is in linear layout can be 1170 determined via flink:vkGetImageSubresourceLayout, using 1171 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1172 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1173 This format only supports images with a width and height that is a 1174 multiple of two. 1175 * ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM specifies an unsigned 1176 normalized _multi-planar format_ that has a 16-bit G component in each 1177 16-bit word of plane 0, a 16-bit B component in each 16-bit word of 1178 plane 1, and a 16-bit R component in each 16-bit word of plane 2. 1179 The horizontal dimension of the R and B plane is halved relative to the 1180 image dimensions, and each R and B value is shared with the G components 1181 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 1182 i_R]. 1183 The location of each plane when this image is in linear layout can be 1184 determined via flink:vkGetImageSubresourceLayout, using 1185 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1186 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1187 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1188 This format only supports images with a width that is a multiple of two. 1189 * ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM specifies an unsigned 1190 normalized _multi-planar format_ that has a 16-bit G component in each 1191 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 1192 consisting of a 16-bit B component in the word in bytes 0..1, and a 1193 16-bit R component in the word in bytes 2..3. 1194 The horizontal dimension of the BR plane is halved relative to the image 1195 dimensions, and each R and B value is shared with the G components for 1196 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 1197 The location of each plane when this image is in linear layout can be 1198 determined via flink:vkGetImageSubresourceLayout, using 1199 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1200 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1201 This format only supports images with a width that is a multiple of two. 1202 * ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM specifies an unsigned 1203 normalized _multi-planar format_ that has a 16-bit G component in each 1204 16-bit word of plane 0, a 16-bit B component in each 16-bit word of 1205 plane 1, and a 16-bit R component in each 16-bit word of plane 2. 1206 Each plane has the same dimensions and each R, G and B component 1207 contributes to a single texel. 1208 The location of each plane when this image is in linear layout can be 1209 determined via flink:vkGetImageSubresourceLayout, using 1210 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1211 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1212 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1213endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1214ifdef::VK_VERSION_1_3,VK_EXT_ycbcr_2plane_444_formats[] 1215 * ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM specifies an unsigned 1216 normalized _multi-planar format_ that has an 8-bit G component in plane 1217 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B 1218 component in byte 0 and an 8-bit R component in byte 1. 1219 Both planes have the same dimensions and each R, G and B component 1220 contributes to a single texel. 1221 The location of each plane when this image is in linear layout can be 1222 determined via flink:vkGetImageSubresourceLayout, using 1223 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1224 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1225 * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 specifies an 1226 unsigned normalized _multi-planar format_ that has a 10-bit G component 1227 in the top 10 bits of each 16-bit word of plane 0, and a two-component, 1228 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits 1229 of the word in bytes 0..1, and a 10-bit R component in the top 10 bits 1230 of the word in bytes 2..3, the bottom 6 bits of each word unused. 1231 Both planes have the same dimensions and each R, G and B component 1232 contributes to a single texel. 1233 The location of each plane when this image is in linear layout can be 1234 determined via flink:vkGetImageSubresourceLayout, using 1235 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1236 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1237 * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 specifies an 1238 unsigned normalized _multi-planar format_ that has a 12-bit G component 1239 in the top 12 bits of each 16-bit word of plane 0, and a two-component, 1240 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits 1241 of the word in bytes 0..1, and a 12-bit R component in the top 12 bits 1242 of the word in bytes 2..3, the bottom 4 bits of each word unused. 1243 Both planes have the same dimensions and each R, G and B component 1244 contributes to a single texel. 1245 The location of each plane when this image is in linear layout can be 1246 determined via flink:vkGetImageSubresourceLayout, using 1247 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1248 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1249 * ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM specifies an unsigned 1250 normalized _multi-planar format_ that has a 16-bit G component in each 1251 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 1252 consisting of a 16-bit B component in the word in bytes 0..1, and a 1253 16-bit R component in the word in bytes 2..3. 1254 Both planes have the same dimensions and each R, G and B component 1255 contributes to a single texel. 1256 The location of each plane when this image is in linear layout can be 1257 determined via flink:vkGetImageSubresourceLayout, using 1258 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1259 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1260endif::VK_VERSION_1_3,VK_EXT_ycbcr_2plane_444_formats[] 1261ifdef::VK_IMG_format_pvrtc[] 1262 * ename:VK_FORMAT_PVRTC1_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_PVRTC1_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_PVRTC2_2BPP_UNORM_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. 1271 * ename:VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG specifies a four-component, 1272 PVRTC compressed format where each 64-bit compressed texel block encodes 1273 a 4{times}4 rectangle of unsigned normalized RGBA texel data. 1274 * ename:VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG specifies a four-component, 1275 PVRTC compressed format where each 64-bit compressed texel block encodes 1276 an 8{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1277 nonlinear encoding applied to the RGB components. 1278 * ename:VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG specifies a four-component, 1279 PVRTC compressed format where each 64-bit compressed texel block encodes 1280 a 4{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1281 nonlinear encoding applied to the RGB components. 1282 * ename:VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG specifies a four-component, 1283 PVRTC compressed format where each 64-bit compressed texel block encodes 1284 an 8{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1285 nonlinear encoding applied to the RGB components. 1286 * ename:VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG specifies a four-component, 1287 PVRTC compressed format where each 64-bit compressed texel block encodes 1288 a 4{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1289 nonlinear encoding applied to the RGB components. 1290endif::VK_IMG_format_pvrtc[] 1291ifdef::VK_NV_optical_flow[] 1292 * ename:VK_FORMAT_R16G16_S10_5_NV specifies a two-component, fixed-point 1293 format where most significant bit specifies the sign bit, next 10 bits 1294 specify the integer value and last 5 bits represent the fractional 1295 value. 1296endif::VK_NV_optical_flow[] 1297-- 1298 1299 1300ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1301[[formats-compatible-planes]] 1302=== Compatible Formats of Planes of Multi-Planar Formats 1303 1304Individual planes of multi-planar formats are size-compatible with 1305single-plane color formats if they occupy the same number of bits per texel 1306block, and are compatible with those formats if they have the same block 1307extent. 1308 1309In the following table, individual planes of a _multi-planar_ format are 1310compatible with the format listed against the relevant plane index for that 1311multi-planar format, and any format compatible with the listed single-plane 1312format according to <<formats-compatibility-classes, Format Compatibility 1313Classes>>. 1314These planes are also <<formats-size-compatibility,size-compatible>> with 1315any format that is <<formats-size-compatibility, size-compatible>> with the 1316listed single-plane format. 1317 1318.Plane Format Compatibility Table 1319[width="95%",cols="1,6,3,3",options="header"] 1320|==== 1321^| 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 1322include::{generated}/formats/planeformat.adoc[] 1323|==== 1324endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1325 1326 1327[[formats-planes-image-aspect]] 1328=== Multi-planar Format Image Aspect 1329 1330When using elink:VkImageAspectFlagBits to select a plane of a multi-planar 1331format, the following are the valid options: 1332 1333 * Two planes 1334 ** ename:VK_IMAGE_ASPECT_PLANE_0_BIT 1335 ** ename:VK_IMAGE_ASPECT_PLANE_1_BIT 1336 * Three planes 1337 ** ename:VK_IMAGE_ASPECT_PLANE_0_BIT 1338 ** ename:VK_IMAGE_ASPECT_PLANE_1_BIT 1339 ** ename:VK_IMAGE_ASPECT_PLANE_2_BIT 1340 1341 1342[[formats-packed]] 1343=== Packed Formats 1344 1345For the purposes of address alignment when accessing buffer memory 1346containing vertex attribute or texel data, the following formats are 1347considered _packed_ - components of the texels or attributes are stored in 1348bitfields packed into one or more 8-, 16-, or 32-bit fundamental data type. 1349 1350include::{generated}/formats/packed.adoc[] 1351 1352 1353=== Identification of Formats 1354 1355A "`format`" is represented by a single enum value. 1356The name of a format is usually built up by using the following pattern: 1357 1358.... 1359 VK_FORMAT_{component-format|compression-scheme}_{numeric-format} 1360.... 1361 1362The component-format indicates either the size of the R, G, B, and A 1363components (if they are present) in the case of a color format, or the size 1364of the depth (D) and stencil (S) components (if they are present) in the 1365case of a depth/stencil format (see below). 1366An X indicates a component that is unused, but may: be present for padding. 1367 1368<<< 1369 1370[[formats-numericformat]] 1371.Interpretation of Numeric Format 1372[width="95%",cols="2,3,3,10",options="header"] 1373|==== 1374| Numeric format | Type-Declaration instructions | Numeric type | Description 1375| etext:UNORM | OpTypeFloat | floating-point | The components are unsigned normalized values in the range [eq]#[0,1]# 1376| etext:SNORM | OpTypeFloat | floating-point | The components are signed normalized values in the range [eq]#[-1,1]# 1377| etext:USCALED | OpTypeFloat | floating-point | The components are unsigned integer values that get converted to floating-point in the range [0,2^n^-1] 1378| etext:SSCALED | OpTypeFloat | floating-point | The components are signed integer values that get converted to floating-point in the range [-2^n-1^,2^n-1^-1] 1379| etext:UINT | OpTypeInt | unsigned integer | The components are unsigned integer values in the range [0,2^n^-1] 1380| etext:SINT | OpTypeInt | signed integer | The components are signed integer values in the range [-2^n-1^,2^n-1^-1] 1381| etext:UFLOAT | OpTypeFloat | floating-point | The components are unsigned floating-point numbers (used by packed, shared exponent, and some compressed formats) 1382| etext:SFLOAT | OpTypeFloat | floating-point | The components are signed floating-point numbers 1383| etext:SRGB | OpTypeFloat | floating-point | 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 13844+| [eq]#n# is the number of bits in the component. 1385|==== 1386 1387The suffix etext:_PACKnn indicates that the format is packed into an 1388underlying type with etext:nn bits. 1389ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1390The suffix etext:_mPACKnn is a short-hand that indicates that the format has 1391etext:m groups of components (which may or may not be stored in separate 1392_planes_) that are each packed into an underlying type with etext:nn bits. 1393endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1394 1395The suffix etext:_BLOCK indicates that the format is a block-compressed 1396format, with the representation of multiple pixels encoded interdependently 1397within a region. 1398 1399[[formats-compressionscheme]] 1400.Interpretation of Compression Scheme 1401[width="95%",cols="2,10",options="header"] 1402|==== 1403| Compression scheme | Description 1404| etext:BC | Block Compression. See <<appendix-compressedtex-bc>>. 1405| etext:ETC2 | Ericsson Texture Compression. See <<appendix-compressedtex-etc2>>. 1406| etext:EAC | ETC2 Alpha Compression. See <<appendix-compressedtex-etc2>>. 1407| etext:ASTC | Adaptive Scalable Texture Compression (LDR Profile). See <<appendix-compressedtex-astc>>. 1408|==== 1409 1410ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1411[[formats-planes]] 1412For _multi-planar_ images, the components in separate _planes_ are separated 1413by underscores, and the number of planes is indicated by the addition of a 1414etext:_2PLANE or etext:_3PLANE suffix. 1415Similarly, the separate aspects of depth-stencil formats are separated by 1416underscores, although these are not considered separate planes. 1417Formats are suffixed by etext:_422 to indicate that planes other than the 1418first are reduced in size by a factor of two horizontally or that the R and 1419B values appear at half the horizontal frequency of the G values, etext:_420 1420to indicate that planes other than the first are reduced in size by a factor 1421of two both horizontally and vertically, and etext:_444 for consistency to 1422indicate that all three planes of a three-planar image are the same size. 1423 1424[NOTE] 1425.Note 1426==== 1427No common format has a single plane containing both R and B components but 1428does not store these components at reduced horizontal resolution. 1429==== 1430endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1431 1432 1433[[texel-block-size]] 1434=== Representation and Texel Block Size 1435 1436Color formats must: be represented in memory in exactly the form indicated 1437by the format's name. 1438This means that promoting one format to another with more bits per component 1439and/or additional components must: not occur for color formats. 1440Depth/stencil formats have more relaxed requirements as discussed 1441<<formats-depth-stencil,below>>. 1442 1443Each format has a _texel block size_, the number of bytes used to store one 1444_texel block_ (a single addressable element of an uncompressed image, or a 1445single compressed block of a compressed image). 1446The texel block size for each format is shown in the 1447<<formats-compatibility, Compatible formats>> table. 1448 1449The representation of non-packed formats is that the first component 1450specified in the name of the format is in the lowest memory addresses and 1451the last component specified is in the highest memory addresses. 1452See <<formats-non-packed,Byte mappings for non-packed/compressed color 1453formats>>. 1454The in-memory ordering of bytes within a component is determined by the host 1455endianness. 1456 1457[[formats-non-packed]] 1458.Byte mappings for non-packed/compressed color formats 1459[options="header",cols="16*1,10",width="100%"] 1460|==== 1461>|0 >|1 >|2 >|3 >|4 >|5 >|6 >|7 >|8 >|9 >|10 >|11 >|12 >|13 >|14 >|15 ^| {leftarrow} Byte 1462^|R 16+>s|etext:VK_FORMAT_R8_* 1463^|R ^|G 15+>s|etext:VK_FORMAT_R8G8_* 1464^|R ^|G ^|B 14+>s|etext:VK_FORMAT_R8G8B8_* 1465^|B ^|G ^|R 14+>s|etext:VK_FORMAT_B8G8R8_* 1466^|R ^|G ^|B ^|A 13+>s|etext:VK_FORMAT_R8G8B8A8_* 1467^|B ^|G ^|R ^|A 13+>s|etext:VK_FORMAT_B8G8R8A8_* 1468ifdef::VK_KHR_maintenance5[] 1469^|A 16+>s|ename:VK_FORMAT_A8_UNORM_KHR 1470endif::VK_KHR_maintenance5[] 1471ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1472^|G~0~ ^|B ^|G~1~ ^|R 13+>s|ename:VK_FORMAT_G8B8G8R8_422_UNORM 1473^|B ^|G~0~ ^|R ^|G~1~ 13+>s|ename:VK_FORMAT_B8G8R8G8_422_UNORM 1474endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 14752+^|R 15+>s|etext:VK_FORMAT_R16_* 14762+^|R 2+^|G 13+>s|etext:VK_FORMAT_R16G16_* 14772+^|R 2+^|G 2+^|B 11+>s|etext:VK_FORMAT_R16G16B16_* 14782+^|R 2+^|G 2+^|B 2+^|A 9+>s|etext:VK_FORMAT_R16G16B16A16_* 1479ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 14802+^|G~0~ 2+^|B 2+^|G~1~ 2+^|R 9+>s|etext:VK_FORMAT_G10X6B10X6G10X6R10X6_4PACK16_422_UNORM 1481etext:VK_FORMAT_G12X4B12X4G12X4R12X4_4PACK16_422_UNORM 1482etext:VK_FORMAT_G16B16G16R16_UNORM 14832+^|B 2+^|G~0~ 2+^|R 2+^|G~1~ 9+>s|etext:VK_FORMAT_B10X6G10X6R10X6G10X6_4PACK16_422_UNORM 1484etext:VK_FORMAT_B12X4G12X4R12X4G12X4_4PACK16_422_UNORM 1485ename:VK_FORMAT_B16G16R16G16_422_UNORM 1486endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 14874+^|R 13+>s|etext:VK_FORMAT_R32_* 14884+^|R 4+^|G 9+>s|etext:VK_FORMAT_R32G32_* 14894+^|R 4+^|G 4+^|B 5+>s|etext:VK_FORMAT_R32G32B32_* 14904+^|R 4+^|G 4+^|B 4+^|A >s|etext:VK_FORMAT_R32G32B32A32_* 14918+^|R 9+>s|etext:VK_FORMAT_R64_* 14928+^|R 8+^|G >s|etext:VK_FORMAT_R64G64_* 149317+^s|etext:VK_FORMAT_R64G64B64_* as etext:VK_FORMAT_R64G64_* but with B in bytes 16-23 149417+^s|etext:VK_FORMAT_R64G64B64A64_* as etext:VK_FORMAT_R64G64B64_* but with A in bytes 24-31 1495|==== 1496 1497Packed formats store multiple components within one underlying type. 1498The bit representation is that the first component specified in the name of 1499the format is in the most-significant bits and the last component specified 1500is in the least-significant bits of the underlying type. 1501The in-memory ordering of bytes comprising the underlying type is determined 1502by the host endianness. 1503 1504[[formats-packed-8-bit]] 1505.Bit mappings for packed 8-bit formats 1506[options="header",cols="8*1",width="100%"] 1507|==== 15088+^h| Bit 1509>|~7~ >|~6~ >|~5~ >|~4~ >|~3~ >|~2~ >|~1~ >|~0~ 15108+^h| ename:VK_FORMAT_R4G4_UNORM_PACK8 15114+^s|R 4+^s|G 1512^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1513^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1514|==== 1515 1516[[formats-packed-16-bit]] 1517.Bit mappings for packed 16-bit formats 1518[options="header",cols="16*1",width="100%"] 1519|==== 152016+^h| Bit 1521>|~15~ >|~14~ >|~13~ >|~12~ >|~11~ >|~10~ >|~9~ >|~8~ >|~7~ >|~6~ >|~5~ >|~4~ >|~3~ >|~2~ >|~1~ >|~0~ 152216+^h|ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 15234+^s|R 4+^s|G 4+^s|B 4+^s|A 1524^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1525^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1526^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1527^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 152816+^h|ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 15294+^s|B 4+^s|G 4+^s|R 4+^s|A 1530^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1531^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1532^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1533^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1534ifdef::VK_VERSION_1_3,VK_EXT_4444_formats[] 153516+^h|ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16 15364+^s|A 4+^s|R 4+^s|G 4+^s|B 1537^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1538^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1539^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1540^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 154116+^h|ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16 15424+^s|A 4+^s|B 4+^s|G 4+^s|R 1543^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1544^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1545^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1546^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1547endif::VK_VERSION_1_3,VK_EXT_4444_formats[] 154816+^h|ename:VK_FORMAT_R5G6B5_UNORM_PACK16 15495+^s|R 6+^s|G 5+^s|B 1550^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1551^| ~5~ ^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1552^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 155316+^h|ename:VK_FORMAT_B5G6R5_UNORM_PACK16 15545+^s|B 6+^s|G 5+^s|R 1555^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1556^| ~5~ ^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1557^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 155816+^h|ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 15595+^s|R 5+^s|G 5+^s|B 1+^s|A 1560^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1561^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1562^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1563^| ~0~ 156416+^h|ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 15655+^s|B 5+^s|G 5+^s|R 1+^s|A 1566^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1567^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1568^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1569^| ~0~ 157016+^h|ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 15711+^s|A 5+^s|R 5+^s|G 5+^s|B 1572^| ~0~ 1573^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1574^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1575^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1576ifdef::VK_KHR_maintenance5[] 157716+^h|ename:VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR 15781+^s|A 5+^s|B 5+^s|G 5+^s|R 1579^| ~0~ 1580^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1581^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1582^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1583endif::VK_KHR_maintenance5[] 1584ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 158516+^h|ename:VK_FORMAT_R10X6_UNORM_PACK16 158610+^s|R 6+^s|X 1587^| ~9~ ^| ~8~ ^| ~7~ ^| ~6~ ^| ~5~ 1588^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1589^| ~5~ ^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 159016+^h|ename:VK_FORMAT_R12X4_UNORM_PACK16 159112+^s|R 4+^s|X 1592^| ~11~ ^| ~10~ 1593^| ~9~ ^| ~8~ ^| ~7~ ^| ~6~ ^| ~5~ 1594^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1595^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1596endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1597|==== 1598 1599[[formats-packed-32-bit]] 1600.Bit mappings for packed 32-bit formats 1601[cols="32*1",options="header"] 1602|==== 160332+^h|Bit 1604>|~31~ >|~30~ >|~29~ >|~28~ >|~27~ >|~26~ >|~25~ >|~24~ >|~23~ >|~22~ >|~21~ >|~20~ >|~19~ >|~18~ >|~17~ >|~16~ 1605>|~15~ >|~14~ >|~13~ >|~12~ >|~11~ >|~10~ >|~9~ >|~8~ >|~7~ >|~6~ >|~5~ >|~4~ >|~3~ >|~2~ >|~1~ >|~0~ 160632+^h|etext:VK_FORMAT_A8B8G8R8_*_PACK32 16078+^s|A 8+^s|B 8+^s|G 8+^s|R 1608^|~7~ ^|~6~ ^|~5~ ^|~4~ 1609^|~3~ ^|~2~ ^|~1~ ^|~0~ 1610^|~7~ ^|~6~ ^|~5~ ^|~4~ 1611^|~3~ ^|~2~ ^|~1~ ^|~0~ 1612^|~7~ ^|~6~ ^|~5~ ^|~4~ 1613^|~3~ ^|~2~ ^|~1~ ^|~0~ 1614^|~7~ ^|~6~ ^|~5~ ^|~4~ 1615^|~3~ ^|~2~ ^|~1~ ^|~0~ 161632+^h|etext:VK_FORMAT_A2R10G10B10_*_PACK32 16172+^s|A 10+^s|R 10+^s|G 10+^s|B 1618^|~1~ ^|~0~ 1619^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1620^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1621^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1622^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1623^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1624^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 162532+^h|etext:VK_FORMAT_A2B10G10R10_*_PACK32 16262+^s|A 10+^s|B 10+^s|G 10+^s|R 1627^|~1~ ^|~0~ 1628^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1629^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1630^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1631^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1632^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1633^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 163432+^h|ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 163510+^s|B 11+^s|G 11+^s|R 1636^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1637^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1638^|~10~ ^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1639^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1640^|~10~ ^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1641^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 164232+^h|ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 16435+^s|E 9+^s|B 9+^s|G 9+^s|R 1644^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1645^|~8~ ^|~7~ ^|~6~ ^|~5~ 1646^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1647^|~8~ ^|~7~ ^|~6~ ^|~5~ 1648^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1649^|~8~ ^|~7~ ^|~6~ ^|~5~ 1650^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 165132+^h|ename:VK_FORMAT_X8_D24_UNORM_PACK32 16528+^s|X 24+^s|D 1653^|~7~ ^|~6~ ^|~5~ ^|~4~ 1654^|~3~ ^|~2~ ^|~1~ ^|~0~ 1655^|~23~ ^|~22~ ^|~21~ ^|~20~ 1656^|~19~ ^|~18~ ^|~17~ ^|~16~ 1657^|~15~ ^|~14~ ^|~13~ ^|~12~ 1658^|~11~ ^|~10~ ^|~9~ ^|~8~ 1659^|~7~ ^|~6~ ^|~5~ ^|~4~ 1660^|~3~ ^|~2~ ^|~1~ ^|~0~ 1661|==== 1662 1663 1664[[formats-depth-stencil]] 1665=== Depth/Stencil Formats 1666 1667Depth/stencil formats are considered opaque and need not be stored in the 1668exact number of bits per texel or component ordering indicated by the format 1669enum. 1670However, implementations must: not substitute a different depth or stencil 1671precision than is described in the format (e.g. D16 must: not be implemented 1672as D24 or D32). 1673 1674 1675[[formats-compatibility-classes]] 1676=== Format Compatibility Classes 1677 1678Uncompressed color formats are _compatible_ with each other if they occupy 1679the same number of bits per texel block 1680ifdef::VK_KHR_maintenance5[] 1681as long as neither or both are alpha formats (e.g., 1682ename:VK_FORMAT_A8_UNORM_KHR) 1683endif::VK_KHR_maintenance5[] 1684. 1685Compressed color formats are compatible with each other if the only 1686difference between them is the <<formats-numericformat, numeric format>> of 1687the uncompressed pixels. 1688Each depth/stencil format is only compatible with itself. 1689In the <<formats-compatibility,following>> table, all the formats in the 1690same row are compatible. 1691Each format has a defined _texel block extent_ specifying how many texels 1692each texel block represents in each dimension. 1693 1694 1695[[formats-compatibility]] 1696.Compatible Formats 1697[width="90%",cols="4,10",options="header"] 1698|==== 1699| Class, Texel Block Size, Texel Block Extent, # Texels/Block | Formats 1700include::{generated}/formats/compatibility.adoc[] 1701|==== 1702 1703 1704[[formats-size-compatibility]] 1705==== Size Compatibility 1706 1707Color formats with the same texel block size are considered 1708ifndef::VK_KHR_maintenance5[] 1709_size-compatible_. 1710endif::VK_KHR_maintenance5[] 1711ifdef::VK_KHR_maintenance5[] 1712_size-compatible_ as long as neither or both are alpha formats (e.g., 1713ename:VK_FORMAT_A8_UNORM_KHR). 1714endif::VK_KHR_maintenance5[] 1715If two size-compatible formats have different block extents (i.e. for 1716compressed formats), then an image with size [eq]#A {times} B {times} C# in 1717one format with a block extent of [eq]#a {times} b {times} c# can be 1718represented as an image with size [eq]#X {times} Y {times} Z# in the other 1719format with block extent [eq]#x {times} y {times} z# at the ratio between 1720the block extents for each format, where 1721 1722 {empty}:: [eq]#{lceil}A/a{rceil} = {lceil}X/x{rceil}# 1723 {empty}:: [eq]#{lceil}B/b{rceil} = {lceil}Y/y{rceil}# 1724 {empty}:: [eq]#{lceil}C/c{rceil} = {lceil}Z/z{rceil}# 1725 1726[NOTE] 1727.Note 1728==== 1729For example, a 7x3 image in the ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK format 1730can be represented as a 1x1 ename:VK_FORMAT_R64G64_UINT image. 1731==== 1732 1733ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[] 1734Images created with the 1735ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT flag can have 1736size-compatible views created from them to enable access via different 1737size-compatible formats. 1738Image views created in this way will be sized to match the expectations of 1739the block extents noted above. 1740endif::VK_VERSION_1_1,VK_KHR_maintenance2[] 1741 1742Copy operations are able to copy between size-compatible formats in 1743different resources to enable manipulation of data in different formats. 1744The extent used in these copy operations always matches the source image, 1745and is resized to the expectations of the block extents noted above for the 1746destination image. 1747 1748 1749[[formats-properties]] 1750== Format Properties 1751 1752[open,refpage='vkGetPhysicalDeviceFormatProperties',desc='Lists physical device\'s format capabilities',type='protos'] 1753-- 1754To query supported format features which are properties of the physical 1755device, call: 1756 1757include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties.adoc[] 1758 1759 * pname:physicalDevice is the physical device from which to query the 1760 format properties. 1761 * pname:format is the format whose properties are queried. 1762 * pname:pFormatProperties is a pointer to a slink:VkFormatProperties 1763 structure in which physical device properties for pname:format are 1764 returned. 1765 1766include::{generated}/validity/protos/vkGetPhysicalDeviceFormatProperties.adoc[] 1767-- 1768 1769[open,refpage='VkFormatProperties',desc='Structure specifying image format properties',type='structs'] 1770-- 1771The sname:VkFormatProperties structure is defined as: 1772 1773include::{generated}/api/structs/VkFormatProperties.adoc[] 1774 1775 * pname:linearTilingFeatures is a bitmask of elink:VkFormatFeatureFlagBits 1776 specifying features supported by images created with a pname:tiling 1777 parameter of ename:VK_IMAGE_TILING_LINEAR. 1778 * pname:optimalTilingFeatures is a bitmask of 1779 elink:VkFormatFeatureFlagBits specifying features supported by images 1780 created with a pname:tiling parameter of ename:VK_IMAGE_TILING_OPTIMAL. 1781 * pname:bufferFeatures is a bitmask of elink:VkFormatFeatureFlagBits 1782 specifying features supported by buffers. 1783 1784[NOTE] 1785.Note 1786==== 1787ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[] 1788If no format feature flags are supported, then the only possible use would 1789be image transfers - which alone are not useful. 1790As such, if no format feature flags are supported, the format itself is not 1791supported, and images of that format cannot be created. 1792endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 1793ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 1794If no format feature flags are supported, the format itself is not 1795supported, and images of that format cannot be created. 1796endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 1797==== 1798 1799If pname:format is a block-compressed format, then pname:bufferFeatures 1800must: not support any features for the format. 1801 1802ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1803If pname:format is not a multi-plane format then pname:linearTilingFeatures 1804and pname:optimalTilingFeatures must: not contain 1805ename:VK_FORMAT_FEATURE_DISJOINT_BIT. 1806endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1807 1808include::{generated}/validity/structs/VkFormatProperties.adoc[] 1809-- 1810 1811[open,refpage='VkFormatFeatureFlagBits',desc='Bitmask specifying features supported by a buffer',type='enums'] 1812-- 1813Bits which can: be set in the slink:VkFormatProperties features 1814pname:linearTilingFeatures, pname:optimalTilingFeatures, 1815ifdef::VK_EXT_image_drm_format_modifier[] 1816slink:VkDrmFormatModifierPropertiesEXT::pname:drmFormatModifierTilingFeatures, 1817endif::VK_EXT_image_drm_format_modifier[] 1818and pname:bufferFeatures are: 1819 1820include::{generated}/api/enums/VkFormatFeatureFlagBits.adoc[] 1821 1822These values 1823ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1824ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 1825all have the same meaning as the equivalently named values for 1826tlink:VkFormatFeatureFlags2 and 1827endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 1828endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1829may: be set in 1830ifndef::VK_EXT_image_drm_format_modifier[] 1831pname:linearTilingFeatures and pname:optimalTilingFeatures, 1832endif::VK_EXT_image_drm_format_modifier[] 1833ifdef::VK_EXT_image_drm_format_modifier[] 1834pname:linearTilingFeatures, pname:optimalTilingFeatures, and 1835slink:VkDrmFormatModifierPropertiesEXT::pname:drmFormatModifierTilingFeatures, 1836endif::VK_EXT_image_drm_format_modifier[] 1837specifying that the features are supported by <<VkImage,images>> or 1838<<VkImageView,image views>> 1839ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1840or <<VkSamplerYcbcrConversion,sampler {YCbCr} conversion objects>> 1841endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1842created with the queried 1843flink:vkGetPhysicalDeviceFormatProperties::pname:format: 1844 1845 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT specifies that an image view 1846 can: be <<descriptorsets-sampledimage, sampled from>>. 1847 * ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT specifies that an image view 1848 can: be used as a <<descriptorsets-storageimage, storage image>>. 1849 * ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT specifies that an image 1850 view can: be used as storage image that supports atomic operations. 1851 * ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT specifies that an image 1852 view can: be used as a framebuffer color attachment and as an input 1853 attachment. 1854 * ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT specifies that an 1855 image view can: be used as a framebuffer color attachment that supports 1856 blending. 1857 * ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT specifies that an 1858 image view can: be used as a framebuffer depth/stencil attachment and as 1859 an input attachment. 1860 * ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT specifies that an image can: be 1861 used as pname:srcImage for the 1862ifndef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1863 fname:vkCmdBlitImage command. 1864endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1865ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1866 fname:vkCmdBlitImage2 and fname:vkCmdBlitImage commands. 1867endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1868 * ename:VK_FORMAT_FEATURE_BLIT_DST_BIT specifies that an image can: be 1869 used as pname:dstImage for the 1870ifndef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1871 fname:vkCmdBlitImage command. 1872endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1873ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1874 fname:vkCmdBlitImage2 and fname:vkCmdBlitImage commands. 1875endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1876 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT specifies that 1877 if ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is also set, an image view 1878 can: be used with a sampler that has either of pname:magFilter or 1879 pname:minFilter set to ename:VK_FILTER_LINEAR, or pname:mipmapMode set 1880 to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. 1881 If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is also set, an image can be 1882 used as the pname:srcImage to 1883ifndef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1884 fname:vkCmdBlitImage 1885endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1886ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1887 fname:vkCmdBlitImage2 and fname:vkCmdBlitImage 1888endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 1889 with a pname:filter of ename:VK_FILTER_LINEAR. 1890 This bit must: only be exposed for formats that also support the 1891 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT or 1892 ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT. 1893+ 1894If the format being queried is a depth/stencil format, this bit only 1895specifies that the depth aspect (not the stencil aspect) of an image of this 1896format supports linear filtering, and that linear filtering of the depth 1897aspect is supported whether depth compare is enabled in the sampler or not. 1898Where depth comparison is supported it may: be linear filtered whether this 1899bit is present or not, but where this bit is not present the filtered value 1900may: be computed in an implementation-dependent manner which differs from 1901the normal rules of linear filtering. 1902The resulting value must: be in the range [eq]#[0,1]# and should: be 1903proportional to, or a weighted average of, the number of comparison passes 1904or failures. 1905 1906ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 1907 * ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT specifies that an image can: be 1908 used as a source image for <<copies, copy commands>>. 1909 If the application pname:apiVersion is Vulkan 1.0 and 1910 `apiext:VK_KHR_maintenance1` is not supported, 1911 ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT is implied to be set when the 1912 format feature flag is not 0. 1913 * ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT specifies that an image can: be 1914 used as a destination image for <<copies, copy commands>> and <<clears, 1915 clear commands>>. 1916 If the application pname:apiVersion is Vulkan 1.0 and 1917 `apiext:VK_KHR_maintenance1` is not supported, 1918 ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT is implied to be set when the 1919 format feature flag is not 0. 1920endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 1921ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 1922 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT specifies 1923 sname:VkImage can: be used as a sampled image with a min or max 1924 elink:VkSamplerReductionMode. 1925 This bit must: only be exposed for formats that also support the 1926 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. 1927endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 1928ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 1929 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT specifies 1930 that sname:VkImage can: be used with a sampler that has either of 1931 pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_EXT, or 1932 be the source image for a blit with pname:filter set to 1933 ename:VK_FILTER_CUBIC_EXT. 1934 This bit must: only be exposed for formats that also support the 1935 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. 1936 If the format being queried is a depth/stencil format, this only 1937 specifies that the depth aspect is cubic filterable. 1938endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 1939ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1940 * ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT specifies that an 1941 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 1942 conversion>> using this format as a source, and that an image of this 1943 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 1944 pname:xChromaOffset and/or pname:yChromaOffset of 1945 ename:VK_CHROMA_LOCATION_MIDPOINT. 1946 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 1947 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 1948 If a format does not incorporate chroma downsampling (it is not a 1949 "`422`" or "`420`" format) but the implementation supports sampler 1950 {YCbCr} conversion for this format, the implementation must: set 1951 ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT. 1952 * ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT specifies that an 1953 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 1954 conversion>> using this format as a source, and that an image of this 1955 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 1956 pname:xChromaOffset and/or pname:yChromaOffset of 1957 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 1958 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 1959 ename:VK_CHROMA_LOCATION_MIDPOINT. 1960 If neither ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT nor 1961 ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT is set, the 1962 application must: not define a <<samplers-YCbCr-conversion,sampler 1963 {YCbCr} conversion>> using this format as a source. 1964 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT 1965 specifies that an application can: define a 1966 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>> using this 1967 format as a source with pname:chromaFilter set to 1968 ename:VK_FILTER_LINEAR. 1969 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT 1970 specifies that the format can have different chroma, min, and mag 1971 filters. 1972 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 1973 specifies that reconstruction is explicit, as described in 1974 <<textures-chroma-reconstruction>>. 1975 If this bit is not present, reconstruction is implicit by default. 1976 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT 1977 specifies that reconstruction can: be forcibly made explicit by setting 1978 slink:VkSamplerYcbcrConversionCreateInfo::pname:forceExplicitReconstruction 1979 to ename:VK_TRUE. 1980 If the format being queried supports 1981 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 1982 it must: also support 1983 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT. 1984 * ename:VK_FORMAT_FEATURE_DISJOINT_BIT specifies that a multi-planar image 1985 can: have the ename:VK_IMAGE_CREATE_DISJOINT_BIT set during image 1986 creation. 1987 An implementation must: not set ename:VK_FORMAT_FEATURE_DISJOINT_BIT for 1988 _single-plane formats_. 1989endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1990ifdef::VK_EXT_fragment_density_map[] 1991 * ename:VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an 1992 image view can: be used as a 1993 <<renderpass-fragmentdensitymapattachment,fragment density map 1994 attachment>>. 1995endif::VK_EXT_fragment_density_map[] 1996ifdef::VK_KHR_fragment_shading_rate[] 1997 * ename:VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 1998 specifies that an image view can: be used as a 1999 <<primsrast-fragment-shading-rate-attachment, fragment shading rate 2000 attachment>>. 2001 An implementation must: not set this feature for formats with a 2002 <<formats-numericformat, numeric format>> other than etext:UINT, or set 2003 it as a buffer feature. 2004endif::VK_KHR_fragment_shading_rate[] 2005ifdef::VK_KHR_video_decode_queue[] 2006 * ename:VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an 2007 image view with this format can: be used as a <<decode-output-picture, 2008 decode output picture>> in <<video-decode-operations, video decode 2009 operations>>. 2010 * ename:VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR specifies that an image 2011 view with this format can: be used as an output <<reconstructed-picture, 2012 reconstructed picture>> or an input <<reference-picture,reference 2013 picture>> in <<video-decode-operations,video decode operations>>. 2014endif::VK_KHR_video_decode_queue[] 2015ifdef::VK_KHR_video_encode_queue[] 2016 * ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an 2017 image view with this format can: be used as an <<encode-input-picture, 2018 encode input picture>> in <<video-encode-operations,video encode 2019 operations>>. 2020 * ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR specifies that an image 2021 view with this format can: be used as an output <<reconstructed-picture, 2022 reconstructed picture>> or an input <<reference-picture,reference 2023 picture>> in <<video-encode-operations,video encode operations>>. 2024endif::VK_KHR_video_encode_queue[] 2025ifdef::VK_KHR_video_decode_queue,VK_KHR_video_encode_queue[] 2026+ 2027[NOTE] 2028.Note 2029==== 2030Specific <<video-profiles,video profiles>> may: have additional restrictions 2031on the format and other image creation parameters corresponding to image 2032views used by video coding operations that can: be enumerated using the 2033flink:vkGetPhysicalDeviceVideoFormatPropertiesKHR command. 2034==== 2035endif::VK_KHR_video_decode_queue,VK_KHR_video_encode_queue[] 2036 2037[[buffer-compatible-format-features]] 2038 2039The following bits may: be set in pname:bufferFeatures, specifying that the 2040features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer 2041views>> created with the queried 2042flink:vkGetPhysicalDeviceFormatProperties::pname:format: 2043 2044 * ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT specifies that the 2045 format can: be used to create a buffer view that can: be bound to a 2046 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor. 2047 * ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT specifies that the 2048 format can: be used to create a buffer view that can: be bound to a 2049 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor. 2050 * ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT specifies that 2051 atomic operations are supported on 2052 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER with this format. 2053 * ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT specifies that the format can: 2054 be used as a vertex attribute format 2055 (sname:VkVertexInputAttributeDescription::pname:format). 2056ifdef::VK_KHR_acceleration_structure[] 2057 * ename:VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR 2058 specifies that the format can: be used as the vertex format when 2059 creating an <<acceleration-structure,acceleration structure>> 2060 (sname:VkAccelerationStructureGeometryTrianglesDataKHR::pname:vertexFormat). 2061 This format can: also be used as the vertex format in host memory when 2062 doing <<host-acceleration-structure, host acceleration structure>> 2063 builds. 2064endif::VK_KHR_acceleration_structure[] 2065 2066[NOTE] 2067.Note 2068==== 2069ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT and 2070ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT are only intended to 2071be advertised for single-component formats, since SPIR-V atomic operations 2072require a scalar type. 2073==== 2074-- 2075 2076[open,refpage='VkFormatFeatureFlags',desc='Bitmask of VkFormatFeatureFlagBits',type='flags'] 2077-- 2078include::{generated}/api/flags/VkFormatFeatureFlags.adoc[] 2079 2080tname:VkFormatFeatureFlags is a bitmask type for setting a mask of zero or 2081more elink:VkFormatFeatureFlagBits. 2082-- 2083 2084ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 2085 2086[open,refpage='vkGetPhysicalDeviceFormatProperties2',desc='Lists physical device\'s format capabilities',type='protos'] 2087-- 2088To query supported format features which are properties of the physical 2089device, call: 2090 2091ifdef::VK_VERSION_1_1[] 2092include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties2.adoc[] 2093endif::VK_VERSION_1_1[] 2094 2095ifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command] 2096 2097ifdef::VK_KHR_get_physical_device_properties2[] 2098include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties2KHR.adoc[] 2099endif::VK_KHR_get_physical_device_properties2[] 2100 2101 * pname:physicalDevice is the physical device from which to query the 2102 format properties. 2103 * pname:format is the format whose properties are queried. 2104 * pname:pFormatProperties is a pointer to a slink:VkFormatProperties2 2105 structure in which physical device properties for pname:format are 2106 returned. 2107 2108fname:vkGetPhysicalDeviceFormatProperties2 behaves similarly to 2109flink:vkGetPhysicalDeviceFormatProperties, with the ability to return 2110extended information in a pname:pNext chain of output structures. 2111 2112include::{generated}/validity/protos/vkGetPhysicalDeviceFormatProperties2.adoc[] 2113-- 2114 2115[open,refpage='VkFormatProperties2',desc='Structure specifying image format properties',type='structs'] 2116-- 2117The sname:VkFormatProperties2 structure is defined as: 2118 2119include::{generated}/api/structs/VkFormatProperties2.adoc[] 2120 2121ifdef::VK_KHR_get_physical_device_properties2[] 2122or the equivalent 2123 2124include::{generated}/api/structs/VkFormatProperties2KHR.adoc[] 2125endif::VK_KHR_get_physical_device_properties2[] 2126 2127 * pname:sType is a elink:VkStructureType value identifying this structure. 2128 * pname:pNext is `NULL` or a pointer to a structure extending this 2129 structure. 2130 * pname:formatProperties is a slink:VkFormatProperties structure 2131 describing features supported by the requested format. 2132 2133include::{generated}/validity/structs/VkFormatProperties2.adoc[] 2134-- 2135 2136ifdef::VK_EXT_image_drm_format_modifier[] 2137[open,refpage='VkDrmFormatModifierPropertiesListEXT',desc='Structure specifying the list of DRM format modifiers supported for a format',type='structs'] 2138-- 2139To obtain the list of <<glossary-drm-format-modifier,Linux DRM format 2140modifiers>> compatible with a elink:VkFormat, add a 2141slink:VkDrmFormatModifierPropertiesListEXT structure to the pname:pNext 2142chain of slink:VkFormatProperties2. 2143 2144The slink:VkDrmFormatModifierPropertiesListEXT structure is defined as: 2145 2146include::{generated}/api/structs/VkDrmFormatModifierPropertiesListEXT.adoc[] 2147 2148 * pname:sType is a elink:VkStructureType value identifying this structure. 2149 * pname:pNext is `NULL` or a pointer to a structure extending this 2150 structure. 2151 * pname:drmFormatModifierCount is an inout parameter related to the number 2152 of modifiers compatible with the pname:format, as described below. 2153 * pname:pDrmFormatModifierProperties is either `NULL` or a pointer to an 2154 array of slink:VkDrmFormatModifierPropertiesEXT structures. 2155 2156If pname:pDrmFormatModifierProperties is `NULL`, then the function returns 2157in pname:drmFormatModifierCount the number of modifiers compatible with the 2158queried pname:format. 2159Otherwise, the application must: set pname:drmFormatModifierCount to the 2160length of the array pname:pDrmFormatModifierProperties; the function will 2161write at most pname:drmFormatModifierCount elements to the array, and will 2162return in pname:drmFormatModifierCount the number of elements written. 2163 2164Among the elements in array pname:pDrmFormatModifierProperties, each 2165returned pname:drmFormatModifier must: be unique. 2166 2167include::{generated}/validity/structs/VkDrmFormatModifierPropertiesListEXT.adoc[] 2168-- 2169 2170[open,refpage='VkDrmFormatModifierPropertiesEXT',desc='Structure specifying properties of a format when combined with a DRM format modifier',type='structs'] 2171-- 2172The slink:VkDrmFormatModifierPropertiesEXT structure describes properties of 2173a elink:VkFormat when that format is combined with a 2174<<glossary-drm-format-modifier,Linux DRM format modifier>>. 2175These properties, like those of slink:VkFormatProperties2, are independent 2176of any particular image. 2177 2178The slink:VkDrmFormatModifierPropertiesEXT structure is defined as: 2179 2180include::{generated}/api/structs/VkDrmFormatModifierPropertiesEXT.adoc[] 2181 2182 * pname:drmFormatModifier is a _Linux DRM format modifier_. 2183 * pname:drmFormatModifierPlaneCount is the number of _memory planes_ in 2184 any image created with pname:format and pname:drmFormatModifier. 2185 An image's _memory planecount_ is distinct from its _format planecount_, 2186 as explained below. 2187 * pname:drmFormatModifierTilingFeatures is a bitmask of 2188 elink:VkFormatFeatureFlagBits that are supported by any image created 2189 with pname:format and pname:drmFormatModifier. 2190 2191The returned pname:drmFormatModifierTilingFeatures must: contain at least 2192one bit. 2193 2194The implementation must: not return etext:DRM_FORMAT_MOD_INVALID in 2195pname:drmFormatModifier. 2196 2197An image's _memory planecount_ (as returned by 2198pname:drmFormatModifierPlaneCount) is distinct from its _format planecount_ 2199(in the sense of <<formats-requiring-sampler-ycbcr-conversion,multi-planar>> 2200{YCbCr} formats). 2201In tlink:VkImageAspectFlags, each 2202`VK_IMAGE_ASPECT_MEMORY_PLANE__{ibit}__BIT_EXT` represents a _memory plane_ 2203and each `VK_IMAGE_ASPECT_PLANE__{ibit}__BIT` a _format plane_. 2204 2205An image's set of _format planes_ is an ordered partition of the image's 2206*content* into separable groups of format components. 2207The ordered partition is encoded in the name of each elink:VkFormat. 2208For example, ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM contains two _format 2209planes_; the first plane contains the green component and the second plane 2210contains the blue component and red component. 2211If the format name does not contain `PLANE`, then the format contains a 2212single plane; for example, ename:VK_FORMAT_R8G8B8A8_UNORM. 2213Some commands, such as flink:vkCmdCopyBufferToImage, do not operate on all 2214format components in the image, but instead operate only on the _format 2215planes_ explicitly chosen by the application and operate on each _format 2216plane_ independently. 2217 2218An image's set of _memory planes_ is an ordered partition of the image's 2219*memory* rather than the image's *content*. 2220Each _memory plane_ is a contiguous range of memory. 2221The union of an image's _memory planes_ is not necessarily contiguous. 2222 2223If an image is <<glossary-linear-resource,linear>>, then the partition is 2224the same for _memory planes_ and for _format planes_. 2225Therefore, if the returned pname:drmFormatModifier is 2226code:DRM_FORMAT_MOD_LINEAR, then pname:drmFormatModifierPlaneCount must: 2227equal the _format planecount_, and pname:drmFormatModifierTilingFeatures 2228must: be identical to the 2229slink:VkFormatProperties2::pname:linearTilingFeatures returned in the same 2230pname:pNext chain. 2231 2232If an image is <<glossary-linear-resource,non-linear>>, then the partition 2233of the image's *memory* into _memory planes_ is implementation-specific and 2234may: be unrelated to the partition of the image's *content* into _format 2235planes_. 2236For example, consider an image whose pname:format is 2237ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, pname:tiling is 2238ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, whose pname:drmFormatModifier 2239is not code:DRM_FORMAT_MOD_LINEAR, and pname:flags lacks 2240ename:VK_IMAGE_CREATE_DISJOINT_BIT. 2241The image has 3 _format planes_, and commands such 2242flink:vkCmdCopyBufferToImage act on each _format plane_ independently as if 2243the data of each _format plane_ were separable from the data of the other 2244planes. 2245In a straightforward implementation, the implementation may: store the 2246image's content in 3 adjacent _memory planes_ where each _memory plane_ 2247corresponds exactly to a _format plane_. 2248However, the implementation may: also store the image's content in a single 2249_memory plane_ where all format components are combined using an 2250implementation-private block-compressed format; or the implementation may: 2251store the image's content in a collection of 7 adjacent _memory planes_ 2252using an implementation-private sharding technique. 2253Because the image is non-linear and non-disjoint, the implementation has 2254much freedom when choosing the image's placement in memory. 2255 2256The _memory planecount_ applies to function parameters and structures only 2257when the API specifies an explicit requirement on 2258pname:drmFormatModifierPlaneCount. 2259In all other cases, the _memory planecount_ is ignored. 2260 2261include::{generated}/validity/structs/VkDrmFormatModifierPropertiesEXT.adoc[] 2262-- 2263 2264ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2265[open,refpage='VkDrmFormatModifierPropertiesList2EXT',desc='Structure specifying the list of DRM format modifiers supported for a format',type='structs'] 2266-- 2267The list of <<glossary-drm-format-modifier,Linux DRM format modifiers>> 2268compatible with a elink:VkFormat can: be obtained by adding a 2269slink:VkDrmFormatModifierPropertiesList2EXT structure to the pname:pNext 2270chain of slink:VkFormatProperties2. 2271 2272The slink:VkDrmFormatModifierPropertiesList2EXT structure is defined as: 2273 2274include::{generated}/api/structs/VkDrmFormatModifierPropertiesList2EXT.adoc[] 2275 2276 * pname:sType is a elink:VkStructureType value identifying this structure. 2277 * pname:pNext is `NULL` or a pointer to a structure extending this 2278 structure. 2279 * pname:drmFormatModifierCount is an inout parameter related to the number 2280 of modifiers compatible with the pname:format, as described below. 2281 * pname:pDrmFormatModifierProperties is either `NULL` or a pointer to an 2282 array of slink:VkDrmFormatModifierProperties2EXT structures. 2283 2284If pname:pDrmFormatModifierProperties is `NULL`, the number of modifiers 2285compatible with the queried pname:format is returned in 2286pname:drmFormatModifierCount. 2287Otherwise, the application must: set pname:drmFormatModifierCount to the 2288length of the array pname:pDrmFormatModifierProperties; the function will 2289write at most pname:drmFormatModifierCount elements to the array, and will 2290return in pname:drmFormatModifierCount the number of elements written. 2291 2292Among the elements in array pname:pDrmFormatModifierProperties, each 2293returned pname:drmFormatModifier must: be unique. 2294 2295Among the elements in array pname:pDrmFormatModifierProperties, the bits 2296reported in pname:drmFormatModifierTilingFeatures must: include the bits 2297reported in the corresponding element of 2298sname:VkDrmFormatModifierPropertiesListEXT::pname:pDrmFormatModifierProperties. 2299 2300include::{generated}/validity/structs/VkDrmFormatModifierPropertiesList2EXT.adoc[] 2301-- 2302 2303[open,refpage='VkDrmFormatModifierProperties2EXT',desc='Structure specifying properties of a format when combined with a DRM format modifier',type='structs'] 2304-- 2305The slink:VkDrmFormatModifierProperties2EXT structure describes properties 2306of a elink:VkFormat when that format is combined with a 2307<<glossary-drm-format-modifier,Linux DRM format modifier>>. 2308These properties, like those of slink:VkFormatProperties2, are independent 2309of any particular image. 2310 2311The slink:VkDrmFormatModifierPropertiesEXT structure is defined as: 2312 2313include::{generated}/api/structs/VkDrmFormatModifierProperties2EXT.adoc[] 2314 2315 * pname:drmFormatModifier is a _Linux DRM format modifier_. 2316 * pname:drmFormatModifierPlaneCount is the number of _memory planes_ in 2317 any image created with pname:format and pname:drmFormatModifier. 2318 An image's _memory planecount_ is distinct from its _format planecount_, 2319 as explained below. 2320 * pname:drmFormatModifierTilingFeatures is a bitmask of 2321 elink:VkFormatFeatureFlagBits2 that are supported by any image created 2322 with pname:format and pname:drmFormatModifier. 2323include::{generated}/validity/structs/VkDrmFormatModifierProperties2EXT.adoc[] 2324-- 2325endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2326endif::VK_EXT_image_drm_format_modifier[] 2327 2328ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2329[open,refpage='VkFormatProperties3',desc='Structure specifying image format properties',type='structs',alias='VkFormatProperties3KHR'] 2330-- 2331To query supported format extended features which are properties of the 2332physical device, add slink:VkFormatProperties3 structure to the pname:pNext 2333chain of slink:VkFormatProperties2. 2334 2335The slink:VkFormatProperties3 structure is defined as: 2336 2337include::{generated}/api/structs/VkFormatProperties3.adoc[] 2338 2339ifdef::VK_KHR_format_feature_flags2[] 2340or the equivalent 2341 2342include::{generated}/api/structs/VkFormatProperties3KHR.adoc[] 2343endif::VK_KHR_format_feature_flags2[] 2344 2345 * pname:linearTilingFeatures is a bitmask of 2346 elink:VkFormatFeatureFlagBits2 specifying features supported by images 2347 created with a pname:tiling parameter of ename:VK_IMAGE_TILING_LINEAR. 2348 * pname:optimalTilingFeatures is a bitmask of 2349 elink:VkFormatFeatureFlagBits2 specifying features supported by images 2350 created with a pname:tiling parameter of ename:VK_IMAGE_TILING_OPTIMAL. 2351 * pname:bufferFeatures is a bitmask of elink:VkFormatFeatureFlagBits2 2352 specifying features supported by buffers. 2353 2354The bits reported in pname:linearTilingFeatures, pname:optimalTilingFeatures 2355and pname:bufferFeatures must: include the bits reported in the 2356corresponding fields of sname:VkFormatProperties2::pname:formatProperties. 2357 2358include::{generated}/validity/structs/VkFormatProperties3.adoc[] 2359-- 2360 2361[open,refpage='VkFormatFeatureFlagBits2',desc='Bitmask specifying features supported by a buffer',type='enums',alias='VkFormatFeatureFlagBits2KHR'] 2362-- 2363Bits which can: be set in the slink:VkFormatProperties3 features 2364pname:linearTilingFeatures, pname:optimalTilingFeatures, and 2365pname:bufferFeatures are: 2366 2367include::{generated}/api/enums/VkFormatFeatureFlagBits2.adoc[] 2368 2369ifdef::VK_KHR_format_feature_flags2[] 2370or the equivalent 2371 2372include::{generated}/api/enums/VkFormatFeatureFlagBits2KHR.adoc[] 2373endif::VK_KHR_format_feature_flags2[] 2374 2375The following bits may: be set in pname:linearTilingFeatures and 2376pname:optimalTilingFeatures, specifying that the features are supported by 2377<<VkImage,images>> or <<VkImageView,image views>> 2378ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2379or <<VkSamplerYcbcrConversion,sampler {YCbCr} conversion objects>> 2380endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2381created with the queried 2382flink:vkGetPhysicalDeviceFormatProperties2::pname:format: 2383 2384 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT specifies that an image view 2385 can: be <<descriptorsets-sampledimage, sampled from>>. 2386 * ename:VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT specifies that an image view 2387 can: be used as a <<descriptorsets-storageimage, storage image>>. 2388 * ename:VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT specifies that an 2389 image view can: be used as storage image that supports atomic 2390 operations. 2391 * ename:VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT specifies that an image 2392 view can: be used as a framebuffer color attachment and as an input 2393 attachment. 2394 * ename:VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT specifies that an 2395 image view can: be used as a framebuffer color attachment that supports 2396 blending. 2397 * ename:VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT specifies that an 2398 image view can: be used as a framebuffer depth/stencil attachment and as 2399 an input attachment. 2400 * ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT specifies that an image can: be 2401 used as the pname:srcImage for 2402ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[flink:vkCmdBlitImage2 and] 2403 flink:vkCmdBlitImage. 2404 * ename:VK_FORMAT_FEATURE_2_BLIT_DST_BIT specifies that an image can: be 2405 used as the pname:dstImage for 2406ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[flink:vkCmdBlitImage2 and] 2407 flink:vkCmdBlitImage. 2408 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT specifies that 2409 if ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT is also set, an image 2410 view can: be used with a sampler that has either of pname:magFilter or 2411 pname:minFilter set to ename:VK_FILTER_LINEAR, or pname:mipmapMode set 2412 to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. 2413 If ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT is also set, an image can be 2414 used as the pname:srcImage for 2415ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[flink:vkCmdBlitImage2 and] 2416 fname:vkCmdBlitImage with a pname:filter of ename:VK_FILTER_LINEAR. 2417 This bit must: only be exposed for formats that also support the 2418 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT or 2419 ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT. 2420+ 2421If the format being queried is a depth/stencil format, this bit only 2422specifies that the depth aspect (not the stencil aspect) of an image of this 2423format supports linear filtering. 2424Where depth comparison is supported it may: be linear filtered whether this 2425bit is present or not, but where this bit is not present the filtered value 2426may: be computed in an implementation-dependent manner which differs from 2427the normal rules of linear filtering. 2428The resulting value must: be in the range [eq]#[0,1]# and should: be 2429proportional to, or a weighted average of, the number of comparison passes 2430or failures. 2431 2432ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2433 * ename:VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT specifies that an image can: 2434 be used as a source image for <<copies, copy commands>>. 2435 * ename:VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT specifies that an image can: 2436 be used as a destination image for <<copies, copy commands>> and 2437 <<clears, clear commands>>. 2438endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2439ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2440 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT specifies 2441 sname:VkImage can: be used as a sampled image with a min or max 2442 elink:VkSamplerReductionMode. 2443 This bit must: only be exposed for formats that also support the 2444 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT. 2445endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2446ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2447 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT specifies that 2448 sname:VkImage can: be used with a sampler that has either of 2449 pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_EXT, or 2450 be the source image for a blit with pname:filter set to 2451 ename:VK_FILTER_CUBIC_EXT. 2452 This bit must: only be exposed for formats that also support the 2453 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT. 2454 If the format being queried is a depth/stencil format, this only 2455 specifies that the depth aspect is cubic filterable. 2456endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2457ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2458 * ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT specifies that an 2459 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 2460 conversion>> using this format as a source, and that an image of this 2461 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 2462 pname:xChromaOffset and/or pname:yChromaOffset of 2463 ename:VK_CHROMA_LOCATION_MIDPOINT. 2464 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 2465 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 2466 If a format does not incorporate chroma downsampling (it is not a 2467 "`422`" or "`420`" format) but the implementation supports sampler 2468 {YCbCr} conversion for this format, the implementation must: set 2469 ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT. 2470 * ename:VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT specifies that an 2471 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 2472 conversion>> using this format as a source, and that an image of this 2473 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 2474 pname:xChromaOffset and/or pname:yChromaOffset of 2475 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 2476 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 2477 ename:VK_CHROMA_LOCATION_MIDPOINT. 2478 If neither ename:VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT nor 2479 ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT is set, the 2480 application must: not define a <<samplers-YCbCr-conversion,sampler 2481 {YCbCr} conversion>> using this format as a source. 2482 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT 2483 specifies that an application can: define a 2484 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>> using this 2485 format as a source with pname:chromaFilter set to 2486 ename:VK_FILTER_LINEAR. 2487 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT 2488 specifies that the format can have different chroma, min, and mag 2489 filters. 2490 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 2491 specifies that reconstruction is explicit, as described in 2492 <<textures-chroma-reconstruction>>. 2493 If this bit is not present, reconstruction is implicit by default. 2494 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT 2495 specifies that reconstruction can: be forcibly made explicit by setting 2496 slink:VkSamplerYcbcrConversionCreateInfo::pname:forceExplicitReconstruction 2497 to ename:VK_TRUE. 2498 If the format being queried supports 2499 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 2500 it must: also support 2501 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT. 2502 * ename:VK_FORMAT_FEATURE_2_DISJOINT_BIT specifies that a multi-planar 2503 image can: have the ename:VK_IMAGE_CREATE_DISJOINT_BIT set during image 2504 creation. 2505 An implementation must: not set ename:VK_FORMAT_FEATURE_2_DISJOINT_BIT 2506 for _single-plane formats_. 2507endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2508ifdef::VK_EXT_fragment_density_map[] 2509 * ename:VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an 2510 image view can: be used as a 2511 <<renderpass-fragmentdensitymapattachment,fragment density map 2512 attachment>>. 2513endif::VK_EXT_fragment_density_map[] 2514ifdef::VK_KHR_fragment_shading_rate[] 2515 * ename:VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 2516 specifies that an image view can: be used as a 2517 <<primsrast-fragment-shading-rate-attachment, fragment shading rate 2518 attachment>>. 2519 An implementation must: not set this feature for formats with a 2520 <<formats-numericformat, numeric format>> other than etext:UINT, or set 2521 it as a buffer feature. 2522endif::VK_KHR_fragment_shading_rate[] 2523ifdef::VK_KHR_video_decode_queue[] 2524 * ename:VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an 2525 image view with this format can: be used as a <<decode-output-picture, 2526 decode output picture>> in <<video-decode-operations, video decode 2527 operations>>. 2528 * ename:VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR specifies that an 2529 image view with this format can: be used as an output 2530 <<reconstructed-picture, reconstructed picture>> or an input 2531 <<reference-picture,reference picture>> in 2532 <<video-decode-operations,video decode operations>>. 2533endif::VK_KHR_video_decode_queue[] 2534ifdef::VK_KHR_video_encode_queue[] 2535 * ename:VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an 2536 image view with this format can: be used as an <<encode-input-picture, 2537 encode input picture>> in <<video-encode-operations,video encode 2538 operations>>. 2539 * ename:VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR specifies that an 2540 image view with this format can: be used as an output 2541 <<reconstructed-picture, reconstructed picture>> or an input 2542 <<reference-picture,reference picture>> in 2543 <<video-encode-operations,video encode operations>>. 2544endif::VK_KHR_video_encode_queue[] 2545ifdef::VK_KHR_video_decode_queue,VK_KHR_video_encode_queue[] 2546+ 2547[NOTE] 2548.Note 2549==== 2550Specific <<video-profiles,video profiles>> may: have additional restrictions 2551on the format and other image creation parameters corresponding to image 2552views used by video coding operations that can: be enumerated using the 2553flink:vkGetPhysicalDeviceVideoFormatPropertiesKHR command. 2554==== 2555endif::VK_KHR_video_decode_queue,VK_KHR_video_encode_queue[] 2556 * ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT specifies that 2557 image views or buffer views created with this format can: be used as 2558 <<descriptorsets-storageimage, storage images>> or 2559 <<descriptorsets-storagetexelbuffer, storage texel buffers>> 2560 respectively for read operations without specifying a format. 2561 * ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT specifies 2562 that image views or buffer views created with this format can: be used 2563 as <<descriptorsets-storageimage, storage images>> or 2564 <<descriptorsets-storagetexelbuffer, storage texel buffers>> 2565 respectively for write operations without specifying a format. 2566 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT specifies 2567 that image views created with this format can: be used for depth 2568 comparison performed by code:OpImage*Dref* instructions. 2569ifdef::VK_NV_linear_color_attachment[] 2570 * ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV specifies that 2571 the format is supported as a renderable 2572 <<glossary-linear-color-attachment, Linear Color Attachment>>. 2573 This bit will be set for renderable color formats in the 2574 pname:linearTilingFeatures. 2575 This must: not be set in the pname:optimalTilingFeatures or 2576 pname:bufferFeatures members. 2577endif::VK_NV_linear_color_attachment[] 2578ifdef::VK_QCOM_image_processing[] 2579 * ename:VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM specifies that image 2580 views created with this format can: be used as the 2581 <<descriptorsets-weightimage, weight image>> input to 2582 <<textures-weightimage,weight image sampling>> operations. 2583 * ename:VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM specifies that 2584 image views created with this format can: be sampled in 2585 <<textures-weightimage,weight image sampling>> operations. 2586 * ename:VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM specifies that image 2587 views created with this format can: be used in 2588 <<textures-blockmatch,block matching>> operations. 2589 * ename:VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM specifies that 2590 image views created with this format can: be sampled in 2591 <<textures-boxfilter,box filter sampling>> operations. 2592endif::VK_QCOM_image_processing[] 2593ifdef::VK_EXT_host_image_copy[] 2594 * ename:VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT specifies that an 2595 image can: be created with ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT. 2596endif::VK_EXT_host_image_copy[] 2597 2598The following bits may: be set in pname:bufferFeatures, specifying that the 2599features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer 2600views>> created with the queried 2601flink:vkGetPhysicalDeviceFormatProperties2::pname:format: 2602 2603 * ename:VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT specifies that the 2604 format can: be used to create a buffer view that can: be bound to a 2605 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor. 2606 * ename:VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT specifies that the 2607 format can: be used to create a buffer view that can: be bound to a 2608 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor. 2609 * ename:VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT specifies that 2610 atomic operations are supported on 2611 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER with this format. 2612 * ename:VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT specifies that the format 2613 can: be used as a vertex attribute format 2614 (sname:VkVertexInputAttributeDescription::pname:format). 2615ifdef::VK_KHR_acceleration_structure[] 2616 * ename:VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR 2617 specifies that the format can: be used as the vertex format when 2618 creating an <<acceleration-structure,acceleration structure>> 2619 (sname:VkAccelerationStructureGeometryTrianglesDataKHR::pname:vertexFormat). 2620 This format can: also be used as the vertex format in host memory when 2621 doing <<host-acceleration-structure, host acceleration structure>> 2622 builds. 2623endif::VK_KHR_acceleration_structure[] 2624ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2625 * ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT specifies that 2626 buffer views created with this format can: be used as 2627 <<descriptorsets-storagetexelbuffer, storage texel buffers>> for read 2628 operations without specifying a format. 2629 * ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT specifies 2630 that buffer views created with this format can: be used as 2631 <<descriptorsets-storagetexelbuffer, storage texel buffers>> for write 2632 operations without specifying a format. 2633endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2634ifdef::VK_NV_optical_flow[] 2635 * ename:VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV specifies that an 2636 image view with this format can: be used as an input or reference to 2637 <<opticalflow-operations,optical flow operations>> 2638 * ename:VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV specifies that an 2639 image view with this format can: be used as a flow vector map (either as 2640 hint, output or global flow) for <<opticalflow-operations,optical flow 2641 operations>> 2642 * ename:VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV specifies that an 2643 image view with this format can: be used as an output cost map for 2644 <<opticalflow-operations,optical flow operations>> 2645endif::VK_NV_optical_flow[] 2646-- 2647 2648[open,refpage='VkFormatFeatureFlags2',desc='Bitmask of VkFormatFeatureFlagBits2',type='flags',alias='VkFormatFeatureFlags2KHR'] 2649-- 2650include::{generated}/api/flags/VkFormatFeatureFlags2.adoc[] 2651 2652ifdef::VK_KHR_format_feature_flags2[] 2653or the equivalent 2654 2655include::{generated}/api/flags/VkFormatFeatureFlags2KHR.adoc[] 2656endif::VK_KHR_format_feature_flags2[] 2657 2658tname:VkFormatFeatureFlags2 is a bitmask type for setting a mask of zero or 2659more elink:VkFormatFeatureFlagBits2. 2660-- 2661endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2662endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 2663 2664ifdef::VK_EXT_multisampled_render_to_single_sampled[] 2665[open,refpage='VkSubpassResolvePerformanceQueryEXT',desc='Structure specifying the efficiency of subpass resolve for an attachment with a format',type='structs'] 2666-- 2667To query the performance characteristics of a <<renderpass-subpass,subpass 2668resolve>> operation for an attachment with a elink:VkFormat, add a 2669slink:VkSubpassResolvePerformanceQueryEXT structure to the pname:pNext chain 2670of slink:VkFormatProperties2. 2671 2672The slink:VkSubpassResolvePerformanceQueryEXT structure is defined as: 2673 2674include::{generated}/api/structs/VkSubpassResolvePerformanceQueryEXT.adoc[] 2675 2676 * pname:sType is a elink:VkStructureType value identifying this structure. 2677 * pname:pNext is `NULL` or a pointer to a structure extending this 2678 structure. 2679 * pname:optimal specifies that a subpass resolve operation is optimally 2680 performed. 2681 2682If pname:optimal is ename:VK_FALSE for a elink:VkFormat, using a subpass 2683resolve operation on a multisampled attachment with this format can incur 2684additional costs, including additional memory bandwidth usage and a higher 2685memory footprint. 2686If an attachment with such a format is used in a 2687<<subpass-multisampledrendertosinglesampled,multisampled-render-to-single-sampled>> 2688subpass, the additional memory and memory bandwidth usage can nullify the 2689benefits of using the `apiext:VK_EXT_multisampled_render_to_single_sampled` 2690extension. 2691 2692include::{generated}/validity/structs/VkSubpassResolvePerformanceQueryEXT.adoc[] 2693-- 2694endif::VK_EXT_multisampled_render_to_single_sampled[] 2695 2696 2697[[potential-format-features]] 2698=== Potential Format Features 2699 2700Some <<fundamentals-validusage,valid usage conditions>> depend on the format 2701features supported by a slink:VkImage whose elink:VkImageTiling is unknown. 2702In such cases the exact elink:VkFormatFeatureFlagBits supported by the 2703slink:VkImage cannot be determined, so the valid usage conditions are 2704expressed in terms of the _potential format features_ of the slink:VkImage 2705format. 2706 2707The _potential format features_ of a elink:VkFormat are defined as follows: 2708 2709 * The union of elink:VkFormatFeatureFlagBits 2710ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2711 and elink:VkFormatFeatureFlagBits2, 2712endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2713 supported when the elink:VkImageTiling is ename:VK_IMAGE_TILING_OPTIMAL 2714ifdef::VK_EXT_image_drm_format_modifier[] 2715 , ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, 2716endif::VK_EXT_image_drm_format_modifier[] 2717 or ename:VK_IMAGE_TILING_LINEAR 2718ifdef::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] 2719 if elink:VkFormat is not ename:VK_FORMAT_UNDEFINED 2720endif::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] 2721ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] 2722 * slink:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures 2723ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2724 and 2725 slink:VkAndroidHardwareBufferFormatProperties2ANDROID::pname:formatFeatures 2726endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 2727 of a valid external format if elink:VkFormat is 2728 ename:VK_FORMAT_UNDEFINED 2729endif::VK_ANDROID_external_memory_android_hardware_buffer[] 2730ifdef::VK_QNX_external_memory_screen_buffer[] 2731 * slink:VkScreenBufferFormatPropertiesQNX::pname:formatFeatures of a valid 2732 external format if elink:VkFormat is ename:VK_FORMAT_UNDEFINED 2733endif::VK_QNX_external_memory_screen_buffer[] 2734 2735 2736[[features-required-format-support]] 2737== Required Format Support 2738 2739// Jon 1.3 TBD - add any appropriate required formats for 1.3 2740 2741Implementations must: support at least the following set of features on the 2742listed formats. 2743For images, these features must: be supported for every elink:VkImageType 2744(including arrayed and cube variants) unless otherwise noted. 2745These features are supported on existing formats without needing to 2746advertise an extension or needing to explicitly enable them. 2747Support for additional functionality beyond the requirements listed here is 2748queried using the flink:vkGetPhysicalDeviceFormatProperties command. 2749 2750[NOTE] 2751.Note 2752==== 2753Unless otherwise excluded below, the required formats are supported for all 2754tlink:VkImageCreateFlags values as long as those flag values are otherwise 2755allowed. 2756==== 2757 2758The following tables show which feature bits must: be supported for each 2759format. 2760ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2761Formats that are required to support 2762ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must: also support 2763ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT and 2764ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT. 2765endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2766 2767.Key for format feature tables 2768[width="70%",cols="1,10"] 2769|==== 2770^|{sym1} | This feature must: be supported on the named format 2771^|{sym2} | This feature must: be supported on at least some 2772of the named formats, with more information in the table 2773where the symbol appears 2774^|{sym3} | This feature must: be supported with some caveats or 2775preconditions, with more information in the table where the symbol appears 2776|==== 2777 2778.Feature bits in pname:optimalTilingFeatures 2779[width="70%"] 2780|==== 2781ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2782|ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT 2783|ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT 2784endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2785|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT 2786|ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT 2787|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT 2788|ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 2789|ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT 2790|ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT 2791|ename:VK_FORMAT_FEATURE_BLIT_DST_BIT 2792|ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT 2793|ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT 2794ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2795|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT 2796endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2797|==== 2798 2799.Feature bits in pname:bufferFeatures 2800[width="70%"] 2801|==== 2802|ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT 2803|ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT 2804|ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT 2805|ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT 2806|==== 2807 2808<<< 2809 2810[[formats-mandatory-features-subbyte]] 2811.Mandatory format support: sub-byte components 2812[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2813|==== 281413+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 281512+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 281611+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 281710+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 28189+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 28198+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 28207+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 28216+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 28225+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 28234+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 28243+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 28252+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 28261+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2827s| Format 2828| ename:VK_FORMAT_UNDEFINED | | | | | | | | | | | | | 2829| ename:VK_FORMAT_R4G4_UNORM_PACK8 | | | | | | | | | | | | | 2830| ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 | | | | | | | | | | | | | 2831| ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | | | | | | | | 2832| ename:VK_FORMAT_R5G6B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2833| ename:VK_FORMAT_B5G6R5_UNORM_PACK16 | | | | | | | | | | | | | 2834| ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 | | | | | | | | | | | | | 2835| ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 | | | | | | | | | | | | | 2836| ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2837ifdef::VK_KHR_maintenance5[] 2838| ename:VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR | | | | | | | | | | | | | 2839endif::VK_KHR_maintenance5[] 2840ifdef::VK_VERSION_1_3,VK_EXT_4444_formats[] 2841| ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16 | {sym2} | {sym2} | {sym2} | | | | | | | | | | 2842| ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16 | {sym3} | {sym3} | {sym3} | | | | | | | | | | 2843// Jon 1.3 TBD - define interaction with 1.3 core here 284414+| Format features marked {sym2} must: be supported for 2845pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2846slink:VkPhysicalDevice4444FormatsFeaturesEXT::pname:formatA4R4G4B4 feature. 284714+| Format features marked {sym3} must: be supported for 2848pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2849slink:VkPhysicalDevice4444FormatsFeaturesEXT::pname:formatA4B4G4R4 feature. 2850endif::VK_VERSION_1_3,VK_EXT_4444_formats[] 2851|==== 2852 2853<<< 2854 2855[[formats-mandatory-features-2byte]] 2856.Mandatory format support: 1-3 byte-sized components 2857[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2858|==== 285913+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 286012+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 286111+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 286210+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 28639+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 28648+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 28657+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 28666+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 28675+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 28684+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 28693+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 28702+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 28711+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2872s| Format 2873| ename:VK_FORMAT_R8_UNORM | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2874| ename:VK_FORMAT_R8_SNORM | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | {sym1} | {sym1} | | 2875| ename:VK_FORMAT_R8_USCALED | | | | | | | | | | | | | 2876| ename:VK_FORMAT_R8_SSCALED | | | | | | | | | | | | | 2877| ename:VK_FORMAT_R8_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2878| ename:VK_FORMAT_R8_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2879| ename:VK_FORMAT_R8_SRGB | | | | | | | | | | | | | 2880| ename:VK_FORMAT_R8G8_UNORM | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2881| ename:VK_FORMAT_R8G8_SNORM | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | {sym1} | {sym1} | | 2882| ename:VK_FORMAT_R8G8_USCALED | | | | | | | | | | | | | 2883| ename:VK_FORMAT_R8G8_SSCALED | | | | | | | | | | | | | 2884| ename:VK_FORMAT_R8G8_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2885| ename:VK_FORMAT_R8G8_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2886| ename:VK_FORMAT_R8G8_SRGB | | | | | | | | | | | | | 2887| ename:VK_FORMAT_R8G8B8_UNORM | | | | | | | | | | | | | 2888| ename:VK_FORMAT_R8G8B8_SNORM | | | | | | | | | | | | | 2889| ename:VK_FORMAT_R8G8B8_USCALED | | | | | | | | | | | | | 2890| ename:VK_FORMAT_R8G8B8_SSCALED | | | | | | | | | | | | | 2891| ename:VK_FORMAT_R8G8B8_UINT | | | | | | | | | | | | | 2892| ename:VK_FORMAT_R8G8B8_SINT | | | | | | | | | | | | | 2893| ename:VK_FORMAT_R8G8B8_SRGB | | | | | | | | | | | | | 2894| ename:VK_FORMAT_B8G8R8_UNORM | | | | | | | | | | | | | 2895| ename:VK_FORMAT_B8G8R8_SNORM | | | | | | | | | | | | | 2896| ename:VK_FORMAT_B8G8R8_USCALED | | | | | | | | | | | | | 2897| ename:VK_FORMAT_B8G8R8_SSCALED | | | | | | | | | | | | | 2898| ename:VK_FORMAT_B8G8R8_UINT | | | | | | | | | | | | | 2899| ename:VK_FORMAT_B8G8R8_SINT | | | | | | | | | | | | | 2900| ename:VK_FORMAT_B8G8R8_SRGB | | | | | | | | | | | | | 2901ifdef::VK_KHR_maintenance5[] 2902| ename:VK_FORMAT_A8_UNORM_KHR | | | | | | | | | | | | | 2903endif::VK_KHR_maintenance5[] 290414+| Format features marked with {sym3} must: be supported for 2905pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2906<<features-shaderStorageImageExtendedFormats, 2907pname:shaderStorageImageExtendedFormats>> feature. 2908|==== 2909 2910<<< 2911 2912[[formats-mandatory-features-4byte]] 2913.Mandatory format support: 4 byte-sized components 2914[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2915|==== 291613+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 291712+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 291811+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 291910+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 29209+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 29218+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 29227+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 29236+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 29245+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 29254+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 29263+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 29272+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 29281+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2929s| Format 2930| ename:VK_FORMAT_R8G8B8A8_UNORM | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 2931| ename:VK_FORMAT_R8G8B8A8_SNORM | {sym1} | {sym1} | {sym1} | {sym1} | | | | | | {sym1} | {sym1} | {sym1} | 2932| ename:VK_FORMAT_R8G8B8A8_USCALED | | | | | | | | | | | | | 2933| ename:VK_FORMAT_R8G8B8A8_SSCALED | | | | | | | | | | | | | 2934| ename:VK_FORMAT_R8G8B8A8_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2935| ename:VK_FORMAT_R8G8B8A8_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2936| ename:VK_FORMAT_R8G8B8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2937| ename:VK_FORMAT_B8G8R8A8_UNORM | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2938| ename:VK_FORMAT_B8G8R8A8_SNORM | | | | | | | | | | | | | 2939| ename:VK_FORMAT_B8G8R8A8_USCALED | | | | | | | | | | | | | 2940| ename:VK_FORMAT_B8G8R8A8_SSCALED | | | | | | | | | | | | | 2941| ename:VK_FORMAT_B8G8R8A8_UINT | | | | | | | | | | | | | 2942| ename:VK_FORMAT_B8G8R8A8_SINT | | | | | | | | | | | | | 2943| ename:VK_FORMAT_B8G8R8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2944| ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 2945| ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | {sym1} | {sym1} | {sym1} | 2946| ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32 | | | | | | | | | | | | | 2947| ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32 | | | | | | | | | | | | | 2948| ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2949| ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2950| ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2951|==== 2952 2953<<< 2954 2955[[formats-mandatory-features-10bit]] 2956.Mandatory format support: 10- and 12-bit components 2957[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2958|==== 295913+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 296012+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 296111+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 296210+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 29639+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 29648+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 29657+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 29666+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 29675+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 29684+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 29693+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 29702+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 29711+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2972s| Format 2973| ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32 | | | | | | | | | | | | | 2974| ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32 | | | | | | | | | | | | | 2975| ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32 | | | | | | | | | | | | | 2976| ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32 | | | | | | | | | | | | | 2977| ename:VK_FORMAT_A2R10G10B10_UINT_PACK32 | | | | | | | | | | | | | 2978| ename:VK_FORMAT_A2R10G10B10_SINT_PACK32 | | | | | | | | | | | | | 2979| ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2980| ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32 | | | | | | | | | | | | | 2981| ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32 | | | | | | | | | | | | | 2982| ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32 | | | | | | | | | | | | | 2983| ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | | {sym1} | | 2984| ename:VK_FORMAT_A2B10G10R10_SINT_PACK32 | | | | | | | | | | | | | 2985ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2986| ename:VK_FORMAT_R10X6_UNORM_PACK16 | | | | | | | | | | | | | 2987| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 | | | | | | | | | | | | | 2988| ename:VK_FORMAT_R12X4_UNORM_PACK16 | | | | | | | | | | | | | 2989| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 | | | | | | | | | | | | | 2990endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 299114+| Format features marked with {sym3} must: be supported for 2992pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2993<<features-shaderStorageImageExtendedFormats, 2994pname:shaderStorageImageExtendedFormats>> feature. 2995|==== 2996 2997<<< 2998 2999[[formats-mandatory-features-16bit]] 3000.Mandatory format support: 16-bit components 3001[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3002|==== 300313+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 300412+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 300511+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 300610+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 30079+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 30088+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 30097+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 30106+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 30115+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 30124+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 30133+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 30142+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 30151+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3016s| Format 3017| ename:VK_FORMAT_R16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 3018| ename:VK_FORMAT_R16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 3019| ename:VK_FORMAT_R16_USCALED | | | | | | | | | | | | | 3020| ename:VK_FORMAT_R16_SSCALED | | | | | | | | | | | | | 3021| ename:VK_FORMAT_R16_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3022| ename:VK_FORMAT_R16_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3023| ename:VK_FORMAT_R16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3024| ename:VK_FORMAT_R16G16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 3025| ename:VK_FORMAT_R16G16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 3026| ename:VK_FORMAT_R16G16_USCALED | | | | | | | | | | | | | 3027| ename:VK_FORMAT_R16G16_SSCALED | | | | | | | | | | | | | 3028| ename:VK_FORMAT_R16G16_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3029| ename:VK_FORMAT_R16G16_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 3030| ename:VK_FORMAT_R16G16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 3031| ename:VK_FORMAT_R16G16B16_UNORM | | | | | | | | | | | | | 3032| ename:VK_FORMAT_R16G16B16_SNORM | | | | | | | | | | | | | 3033| ename:VK_FORMAT_R16G16B16_USCALED | | | | | | | | | | | | | 3034| ename:VK_FORMAT_R16G16B16_SSCALED | | | | | | | | | | | | | 3035| ename:VK_FORMAT_R16G16B16_UINT | | | | | | | | | | | | | 3036| ename:VK_FORMAT_R16G16B16_SINT | | | | | | | | | | | | | 3037| ename:VK_FORMAT_R16G16B16_SFLOAT | | | | | | | | | | | | | 3038| ename:VK_FORMAT_R16G16B16A16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 3039| ename:VK_FORMAT_R16G16B16A16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 3040| ename:VK_FORMAT_R16G16B16A16_USCALED | | | | | | | | | | | | | 3041| ename:VK_FORMAT_R16G16B16A16_SSCALED | | | | | | | | | | | | | 3042| ename:VK_FORMAT_R16G16B16A16_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3043| ename:VK_FORMAT_R16G16B16A16_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3044| ename:VK_FORMAT_R16G16B16A16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 304514+| Format features marked with {sym3} must: be supported for 3046pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3047<<features-shaderStorageImageExtendedFormats, 3048pname:shaderStorageImageExtendedFormats>> feature. 3049|==== 3050 3051<<< 3052 3053[[formats-mandatory-features-32bit]] 3054.Mandatory format support: 32-bit components 3055[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3056|==== 305713+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 305812+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 305911+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 306010+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 30619+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 30628+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 30637+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 30646+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 30655+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 30664+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 30673+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 30682+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 30691+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3070s| Format 3071| ename:VK_FORMAT_R32_UINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1} 3072| ename:VK_FORMAT_R32_SINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1} 3073| ename:VK_FORMAT_R32_SFLOAT | {sym1} | {sym1} | | {sym1} 3074| 3075ifdef::VK_EXT_shader_atomic_float[{sym2}] 3076 | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3077| ename:VK_FORMAT_R32G32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3078| ename:VK_FORMAT_R32G32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3079| ename:VK_FORMAT_R32G32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3080| ename:VK_FORMAT_R32G32B32_UINT | | | | | | | | | | {sym1} | | | 3081| ename:VK_FORMAT_R32G32B32_SINT | | | | | | | | | | {sym1} | | | 3082| ename:VK_FORMAT_R32G32B32_SFLOAT | | | | | | | | | | {sym1} | | | 3083| ename:VK_FORMAT_R32G32B32A32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3084| ename:VK_FORMAT_R32G32B32A32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3085| ename:VK_FORMAT_R32G32B32A32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 3086ifdef::VK_EXT_shader_atomic_float[] 308714+| Format features marked with {sym2} must: be supported for 3088pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports 3089the <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>> 3090or the <<features-shaderImageFloat32AtomicAdd, pname:shaderImageFloat32AtomicAdd>> 3091ifdef::VK_EXT_shader_atomic_float2[] 3092or the <<features-shaderImageFloat32AtomicMinMax, pname:shaderImageFloat32AtomicMinMax>> 3093endif::VK_EXT_shader_atomic_float2[] 3094feature. 3095endif::VK_EXT_shader_atomic_float[] 3096|==== 3097 3098<<< 3099 3100[[formats-mandatory-features-64bit]] 3101.Mandatory format support: 64-bit/uneven components 3102[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3103|==== 310413+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 310512+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 310611+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 310710+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 31089+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 31098+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 31107+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 31116+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 31125+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 31134+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 31143+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 31152+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 31161+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3117s| Format 3118| ename:VK_FORMAT_R64_UINT | | | 3119| 3120ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3121| 3122ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3123 | | | | | | | | 3124| ename:VK_FORMAT_R64_SINT | | | 3125| 3126ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3127| 3128ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3129 | | | | | | | | 3130| ename:VK_FORMAT_R64_SFLOAT | | | | | | | | | | | | | 3131| ename:VK_FORMAT_R64G64_UINT | | | | | | | | | | | | | 3132| ename:VK_FORMAT_R64G64_SINT | | | | | | | | | | | | | 3133| ename:VK_FORMAT_R64G64_SFLOAT | | | | | | | | | | | | | 3134| ename:VK_FORMAT_R64G64B64_UINT | | | | | | | | | | | | | 3135| ename:VK_FORMAT_R64G64B64_SINT | | | | | | | | | | | | | 3136| ename:VK_FORMAT_R64G64B64_SFLOAT | | | | | | | | | | | | | 3137| ename:VK_FORMAT_R64G64B64A64_UINT | | | | | | | | | | | | | 3138| ename:VK_FORMAT_R64G64B64A64_SINT | | | | | | | | | | | | | 3139| ename:VK_FORMAT_R64G64B64A64_SFLOAT | | | | | | | | | | | | | 3140| ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | | {sym1} | | 3141| ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | | | | 314214+| Format features marked with {sym3} must: be supported for 3143pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3144<<features-shaderStorageImageExtendedFormats, 3145pname:shaderStorageImageExtendedFormats>> feature. 3146ifdef::VK_EXT_shader_image_atomic_int64[] 314714+| 3148If the <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>> 3149feature is supported, ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT and 3150ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT must: be advertised in 3151pname:optimalTilingFeatures for both ename:VK_FORMAT_R64_UINT and 3152ename:VK_FORMAT_R64_SINT. 3153endif::VK_EXT_shader_image_atomic_int64[] 3154|==== 3155 3156<<< 3157 3158[[formats-mandatory-features-depth-stencil]] 3159.Mandatory format support: depth/stencil with `VkImageType` ename:VK_IMAGE_TYPE_2D 3160[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3161|==== 316213+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 316312+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 316411+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 316510+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 31669+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 31678+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 31687+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 31696+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 31705+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 31714+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 31723+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 31732+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 31741+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3175s| Format 3176| ename:VK_FORMAT_D16_UNORM | {sym1} | {sym1} | | | | | | | {sym1} | | | | 3177| ename:VK_FORMAT_X8_D24_UNORM_PACK32 | | | | | | | | | {sym2} | | | | 3178| ename:VK_FORMAT_D32_SFLOAT | {sym1} | {sym1} | | | | | | | {sym2} | | | | 3179| ename:VK_FORMAT_S8_UINT | | | | | | | | | | | | | 3180| ename:VK_FORMAT_D16_UNORM_S8_UINT | | | | | | | | | | | | | 3181| ename:VK_FORMAT_D24_UNORM_S8_UINT | | | | | | | | | {sym2} | | | | 3182| ename:VK_FORMAT_D32_SFLOAT_S8_UINT | | | | | | | | | {sym2} | | | | 318314+| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT feature must: be 3184supported for at least one of ename:VK_FORMAT_X8_D24_UNORM_PACK32 and 3185ename:VK_FORMAT_D32_SFLOAT, and must: be supported for at least one of 3186ename:VK_FORMAT_D24_UNORM_S8_UINT and ename:VK_FORMAT_D32_SFLOAT_S8_UINT. 318714+| pname:bufferFeatures must: not support any features for these formats 3188|==== 3189 3190<<< 3191 3192[[formats-mandatory-features-bcn]] 3193.Mandatory format support: BC compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D and ename:VK_IMAGE_TYPE_3D 3194[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3195|==== 319613+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 319712+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 319811+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 319910+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 32009+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 32018+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 32027+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 32036+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 32045+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 32054+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 32063+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 32072+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 32081+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3209s| Format 3210| ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3211| ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3212| ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3213| ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3214| ename:VK_FORMAT_BC2_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3215| ename:VK_FORMAT_BC2_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3216| ename:VK_FORMAT_BC3_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3217| ename:VK_FORMAT_BC3_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3218| ename:VK_FORMAT_BC4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3219| ename:VK_FORMAT_BC4_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3220| ename:VK_FORMAT_BC5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3221| ename:VK_FORMAT_BC5_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3222| ename:VK_FORMAT_BC6H_UFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3223| ename:VK_FORMAT_BC6H_SFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3224| ename:VK_FORMAT_BC7_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3225| ename:VK_FORMAT_BC7_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 322614+| The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3227ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3228ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3229supported in pname:optimalTilingFeatures for all the formats in at least 3230one of: this table, <<formats-mandatory-features-etc>>, or 3231<<formats-mandatory-features-astc>>. 3232|==== 3233 3234<<< 3235 3236[[formats-mandatory-features-etc]] 3237.Mandatory format support: ETC2 and EAC compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D 3238[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3239|==== 324013+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 324112+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 324211+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 324310+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 32449+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 32458+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 32467+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 32476+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 32485+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 32494+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 32503+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 32512+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 32521+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3253s| Format 3254| ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3255| ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3256| ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3257| ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3258| ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3259| ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3260| ename:VK_FORMAT_EAC_R11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3261| ename:VK_FORMAT_EAC_R11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3262| ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3263| ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 326414+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3265ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3266ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3267supported in pname:optimalTilingFeatures for all the formats in at least 3268one of: this table, <<formats-mandatory-features-bcn>>, or 3269<<formats-mandatory-features-astc>>. 3270|==== 3271 3272<<< 3273 3274[[formats-mandatory-features-astc]] 3275.Mandatory format support: ASTC LDR compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D 3276[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3277|==== 327813+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 327912+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 328011+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 328110+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 32829+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 32838+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 32847+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 32856+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 32865+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 32874+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 32883+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 32892+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 32901+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3291s| Format 3292| ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3293| ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3294| ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3295| ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3296| ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3297| ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3298| ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3299| ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3300| ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3301| ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3302| ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3303| ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3304| ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3305| ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3306| ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3307| ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3308| ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3309| ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3310| ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3311| ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3312| ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3313| ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3314| ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3315| ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3316| ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3317| ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3318| ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3319| ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 332014+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3321ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3322ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3323supported in pname:optimalTilingFeatures for all the formats in at least 3324one of: this table, <<formats-mandatory-features-bcn>>, or 3325<<formats-mandatory-features-etc>>. 3326|==== 3327 3328ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 3329If cubic filtering is supported, 3330ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be 3331supported for the following image view types: 3332 3333 * ename:VK_IMAGE_VIEW_TYPE_2D 3334 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3335 3336for the following formats: 3337 3338 * ename:VK_FORMAT_R4G4_UNORM_PACK8 3339 * ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 3340 * ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 3341 * ename:VK_FORMAT_R5G6B5_UNORM_PACK16 3342 * ename:VK_FORMAT_B5G6R5_UNORM_PACK16 3343 * ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 3344 * ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 3345 * ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 3346 * ename:VK_FORMAT_R8_UNORM 3347 * ename:VK_FORMAT_R8_SNORM 3348 * ename:VK_FORMAT_R8_SRGB 3349 * ename:VK_FORMAT_R8G8_UNORM 3350 * ename:VK_FORMAT_R8G8_SNORM 3351 * ename:VK_FORMAT_R8G8_SRGB 3352 * ename:VK_FORMAT_R8G8B8_UNORM 3353 * ename:VK_FORMAT_R8G8B8_SNORM 3354 * ename:VK_FORMAT_R8G8B8_SRGB 3355 * ename:VK_FORMAT_B8G8R8_UNORM 3356 * ename:VK_FORMAT_B8G8R8_SNORM 3357 * ename:VK_FORMAT_B8G8R8_SRGB 3358 * ename:VK_FORMAT_R8G8B8A8_UNORM 3359 * ename:VK_FORMAT_R8G8B8A8_SNORM 3360 * ename:VK_FORMAT_R8G8B8A8_SRGB 3361 * ename:VK_FORMAT_B8G8R8A8_UNORM 3362 * ename:VK_FORMAT_B8G8R8A8_SNORM 3363 * ename:VK_FORMAT_B8G8R8A8_SRGB 3364 * ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 3365 * ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 3366 * ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 3367 3368If ETC compressed formats are supported, 3369ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be 3370supported for the following image view types: 3371 3372 * ename:VK_IMAGE_VIEW_TYPE_2D 3373 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3374 3375for the following additional formats: 3376 3377 * ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK 3378 * ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK 3379 * ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK 3380 * ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK 3381 * ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK 3382 * ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK 3383 3384If cubic filtering is supported for any other formats, the following image 3385view types must: be supported for those formats: 3386 3387 * ename:VK_IMAGE_VIEW_TYPE_2D 3388 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3389 3390endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 3391 3392ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3393 3394To be used with sname:VkImageView with pname:subresourceRange.aspectMask 3395equal to ename:VK_IMAGE_ASPECT_COLOR_BIT, <<samplers-YCbCr-conversion, 3396sampler {YCbCr} conversion>> must: be enabled for the following formats: 3397 3398[[formats-requiring-sampler-ycbcr-conversion]] 3399.Formats requiring sampler {YCbCr} conversion for ename:VK_IMAGE_ASPECT_COLOR_BIT image views 3400[width="100%",cols="18,^3,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3401|==== 340211+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT .11+^.^| {downarrow} 340310+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT .10+^.^| {downarrow} 34049+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT .9+^.^| {downarrow} 34058+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT .8+^.^| {downarrow} 34067+>| ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT .7+^.^| {downarrow} 34076+>| ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT .6+^.^| {downarrow} 34085+>| ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT .5+^.^| {downarrow} 34094+>| ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT .4+^.^| {downarrow} 34103+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .3+^.^| {downarrow} 34112+>| ename:VK_FORMAT_FEATURE_DISJOINT_BIT .2+^.^| {downarrow} 3412s| Format s| Planes 3413| ename:VK_FORMAT_G8B8G8R8_422_UNORM | 1 | | | | | | | | | | 3414| ename:VK_FORMAT_B8G8R8G8_422_UNORM | 1 | | | | | | | | | | 3415| ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM | 3 | | {sym2} | {sym2} | {sym2} | {sym2} | | | | | 3416| ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM | 2 | | {sym2} | {sym2} | {sym2} | {sym2} | | | | | 3417| ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM | 3 | | | | | | | | | | 3418| ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM | 2 | | | | | | | | | | 3419| ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM | 3 | | | | | | | | | | 3420ifdef::VK_EXT_rgba10x6_formats[] 3421| ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 {sym3} | 1 | | | | | | | | | | 3422endif::VK_EXT_rgba10x6_formats[] 3423ifndef::VK_EXT_rgba10x6_formats[] 3424 | ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 | 1 | | | | | | | | | | 3425endif::VK_EXT_rgba10x6_formats[] 3426| ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3427| ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3428| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 | 3 | | | | | | | | | | 3429| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 | 2 | | | | | | | | | | 3430| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 | 3 | | | | | | | | | | 3431| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 | 2 | | | | | | | | | | 3432| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 | 3 | | | | | | | | | | 3433| ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 | 1 | | | | | | | | | | 3434| ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3435| ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3436| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 | 3 | | | | | | | | | | 3437| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 | 2 | | | | | | | | | | 3438| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 | 3 | | | | | | | | | | 3439| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 | 2 | | | | | | | | | | 3440| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 | 3 | | | | | | | | | | 3441| ename:VK_FORMAT_G16B16G16R16_422_UNORM | 1 | | | | | | | | | | 3442| ename:VK_FORMAT_B16G16R16G16_422_UNORM | 1 | | | | | | | | | | 3443| ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM | 3 | | | | | | | | | | 3444| ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM | 2 | | | | | | | | | | 3445| ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM | 3 | | | | | | | | | | 3446| ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM | 2 | | | | | | | | | | 3447| ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM | 3 | | | | | | | | | | 3448ifdef::VK_VERSION_1_3,VK_EXT_ycbcr_2plane_444_formats[] 3449| ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM | 2 | | | | | | | | | | 3450| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 | 2 | | | | | | | | | | 3451| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 | 2 | | | | | | | | | | 3452| ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM | 2 | | | | | | | | | | 3453endif::VK_VERSION_1_3,VK_EXT_ycbcr_2plane_444_formats[] 345412+| Format features marked {sym2} must: be supported for 3455pname:optimalTilingFeatures with elink:VkImageType 3456ename:VK_IMAGE_TYPE_2D if the sname:VkPhysicalDevice supports the 3457slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures feature. 3458ifdef::VK_EXT_rgba10x6_formats[] 345912+| Formats marked {sym3} do not require a sampler {YCbCr} conversion for 3460ename:VK_IMAGE_ASPECT_COLOR_BIT image views if the 3461slink:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT::pname:formatRgba10x6WithoutYCbCrSampler 3462feature is enabled. 3463endif::VK_EXT_rgba10x6_formats[] 3464|==== 3465 3466Implementations are not required to support the 3467ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, 3468ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or 3469ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT tlink:VkImageCreateFlags for the 3470above formats that require <<samplers-YCbCr-conversion,sampler {YCbCr} 3471conversion>>. 3472To determine whether the implementation supports sparse image creation flags 3473with these formats use flink:vkGetPhysicalDeviceImageFormatProperties or 3474flink:vkGetPhysicalDeviceImageFormatProperties2. 3475 3476endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3477 3478ifdef::VK_EXT_fragment_density_map[] 3479ename:VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT must: be supported for 3480the following formats if the <<features-fragmentDensityMap, 3481pname:fragmentDensityMap>> feature is enabled: 3482 3483 * ename:VK_FORMAT_R8G8_UNORM 3484endif::VK_EXT_fragment_density_map[] 3485 3486ifdef::VK_KHR_acceleration_structure[] 3487ename:VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR must: 3488be supported in pname:bufferFeatures for the following formats if the 3489<<features-accelerationStructure, pname:accelerationStructure>> feature is 3490supported: 3491 3492 * ename:VK_FORMAT_R32G32_SFLOAT 3493 * ename:VK_FORMAT_R32G32B32_SFLOAT 3494 * ename:VK_FORMAT_R16G16_SFLOAT 3495 * ename:VK_FORMAT_R16G16B16A16_SFLOAT 3496 * ename:VK_FORMAT_R16G16_SNORM 3497 * ename:VK_FORMAT_R16G16B16A16_SNORM 3498endif::VK_KHR_acceleration_structure[] 3499 3500ifdef::VK_KHR_fragment_shading_rate[] 3501ename:VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR must: be 3502supported for the following formats if the 3503<<features-attachmentFragmentShadingRate, 3504pname:attachmentFragmentShadingRate>> feature is supported: 3505 3506 * ename:VK_FORMAT_R8_UINT 3507endif::VK_KHR_fragment_shading_rate[] 3508 3509ifdef::VK_EXT_host_image_copy[] 3510If `apiext:VK_EXT_host_image_copy` is supported and 3511ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is supported in 3512pname:optimalTilingFeatures or pname:linearTilingFeatures for a color 3513format, ename:VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT must: also be 3514supported in pname:optimalTilingFeatures or pname:linearTilingFeatures 3515respectively. 3516endif::VK_EXT_host_image_copy[] 3517 3518 3519[[formats-without-shader-storage-format]] 3520=== Formats Without Shader Storage Format 3521 3522The device-level features for using a storage image or a storage texel 3523buffer with an image format of code:Unknown, 3524<<features-shaderStorageImageReadWithoutFormat, 3525pname:shaderStorageImageReadWithoutFormat>> and 3526<<features-shaderStorageImageWriteWithoutFormat, 3527pname:shaderStorageImageWriteWithoutFormat>>, only apply to the following 3528formats: 3529 3530 * ename:VK_FORMAT_R8G8B8A8_UNORM 3531 * ename:VK_FORMAT_R8G8B8A8_SNORM 3532 * ename:VK_FORMAT_R8G8B8A8_UINT 3533 * ename:VK_FORMAT_R8G8B8A8_SINT 3534 * ename:VK_FORMAT_R32_UINT 3535 * ename:VK_FORMAT_R32_SINT 3536 * ename:VK_FORMAT_R32_SFLOAT 3537 * ename:VK_FORMAT_R32G32_UINT 3538 * ename:VK_FORMAT_R32G32_SINT 3539 * ename:VK_FORMAT_R32G32_SFLOAT 3540 * ename:VK_FORMAT_R32G32B32A32_UINT 3541 * ename:VK_FORMAT_R32G32B32A32_SINT 3542 * ename:VK_FORMAT_R32G32B32A32_SFLOAT 3543 * ename:VK_FORMAT_R16G16B16A16_UINT 3544 * ename:VK_FORMAT_R16G16B16A16_SINT 3545 * ename:VK_FORMAT_R16G16B16A16_SFLOAT 3546 * ename:VK_FORMAT_R16G16_SFLOAT 3547 * ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 3548 * ename:VK_FORMAT_R16_SFLOAT 3549 * ename:VK_FORMAT_R16G16B16A16_UNORM 3550 * ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 3551 * ename:VK_FORMAT_R16G16_UNORM 3552 * ename:VK_FORMAT_R8G8_UNORM 3553 * ename:VK_FORMAT_R16_UNORM 3554 * ename:VK_FORMAT_R8_UNORM 3555 * ename:VK_FORMAT_R16G16B16A16_SNORM 3556 * ename:VK_FORMAT_R16G16_SNORM 3557 * ename:VK_FORMAT_R8G8_SNORM 3558 * ename:VK_FORMAT_R16_SNORM 3559 * ename:VK_FORMAT_R8_SNORM 3560 * ename:VK_FORMAT_R16G16_SINT 3561 * ename:VK_FORMAT_R8G8_SINT 3562 * ename:VK_FORMAT_R16_SINT 3563 * ename:VK_FORMAT_R8_SINT 3564 * ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 3565 * ename:VK_FORMAT_R16G16_UINT 3566 * ename:VK_FORMAT_R8G8_UINT 3567 * ename:VK_FORMAT_R16_UINT 3568 * ename:VK_FORMAT_R8_UINT 3569ifdef::VK_KHR_maintenance5[] 3570 * ename:VK_FORMAT_A8_UNORM_KHR 3571endif::VK_KHR_maintenance5[] 3572 3573[NOTE] 3574.Note 3575==== 3576This list of formats is the union of required storage formats from 3577<<features-required-format-support, Required Format Support>> section and 3578formats listed in <<features-shaderStorageImageExtendedFormats, 3579pname:shaderStorageImageExtendedFormats>>. 3580==== 3581 3582ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 3583An implementation that supports ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3584for any format from the given list of formats and supports 3585<<features-shaderStorageImageReadWithoutFormat, 3586pname:shaderStorageImageReadWithoutFormat>> must: support 3587ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT for that same 3588format if Vulkan 1.3 or the `apiext:VK_KHR_format_feature_flags2` extension 3589is supported. 3590 3591An implementation that supports ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3592for any format from the given list of formats and supports 3593<<features-shaderStorageImageWriteWithoutFormat, 3594pname:shaderStorageImageWriteWithoutFormat>> must: support 3595ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT for that same 3596format if Vulkan 1.3 or the `apiext:VK_KHR_format_feature_flags2` extension 3597is supported. 3598endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 3599 3600 3601ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 3602=== Depth Comparison Format Support 3603 3604If Vulkan 1.3 or the `apiext:VK_KHR_format_feature_flags2` extension is 3605supported, a depth/stencil format with a depth component supporting 3606ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must: support 3607ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT. 3608 3609endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] 3610 3611 3612[[format-feature-dependent-usage-flags]] 3613=== Format Feature Dependent Usage Flags 3614 3615Certain resource usage flags depend on support for the corresponding format 3616feature flag for the format in question. 3617The following tables list the elink:VkBufferUsageFlagBits and 3618elink:VkImageUsageFlagBits that have such dependencies, and the format 3619feature flags they depend on. 3620Additional restrictions, including, but not limited to, further required 3621format feature flags specific to the particular use of the resource may: 3622apply, as described in the respective sections of this specification. 3623 3624.Format feature dependent buffer usage flags 3625[cols="50%,50%",options="header"] 3626|==== 3627|Buffer usage flag | Required format feature flag 3628|ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT 3629|ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT 3630|ename:VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT 3631|==== 3632 3633.Format feature dependent image usage flags 3634[cols="50%,50%",options="header"] 3635|==== 3636|Image usage flag | Required format feature flag 3637|ename:VK_IMAGE_USAGE_SAMPLED_BIT | ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT 3638|ename:VK_IMAGE_USAGE_STORAGE_BIT | ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3639|ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT 3640|ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT 3641|ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT 3642ifdef::VK_KHR_fragment_shading_rate[] 3643|ename:VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR | ename:VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 3644endif::VK_KHR_fragment_shading_rate[] 3645ifdef::VK_KHR_video_decode_queue[] 3646|ename:VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR | ename:VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR 3647|ename:VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR | ename:VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR 3648endif::VK_KHR_video_decode_queue[] 3649ifdef::VK_KHR_video_encode_queue[] 3650|ename:VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR | ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR 3651|ename:VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR | ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR 3652endif::VK_KHR_video_encode_queue[] 3653|==== 3654