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