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