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