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