1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_vk_mandatory_format_support_table.py using data from
3 // vk_mandatory_format_support_data.json and the vk.xml file situated at
4 // /third_party/vulkan-validation-layers/src/scripts/vk.xml
5 //
6 // Copyright 2020 The ANGLE Project Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file.
9 //
10 // vk_mandatory_format_support_table_autogen.cpp:
11 // Queries for full Vulkan mandatory format support information based on VK format.
12
13 #include "libANGLE/renderer/vulkan/vk_format_utils.h"
14
15 using namespace angle;
16
17 namespace rx
18 {
19
20 namespace vk
21 {
22
23 namespace
24 {
25 static_assert(185 == kNumVkFormats, "Update kNumVkFormats");
26 constexpr std::array<VkFormatProperties, kNumVkFormats> kFormatProperties = {{
27
28 /* VK_FORMAT_UNDEFINED */
29 {0, 0, 0},
30 /* VK_FORMAT_R4G4_UNORM_PACK8 */
31 {0, 0, 0},
32 /* VK_FORMAT_R4G4B4A4_UNORM_PACK16 */
33 {0, 0, 0},
34 /* VK_FORMAT_B4G4R4A4_UNORM_PACK16 */
35 {0,
36 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
37 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
38 0},
39 /* VK_FORMAT_R5G6B5_UNORM_PACK16 */
40 {0,
41 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
42 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
43 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
44 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
45 0},
46 /* VK_FORMAT_B5G6R5_UNORM_PACK16 */
47 {0, 0, 0},
48 /* VK_FORMAT_R5G5B5A1_UNORM_PACK16 */
49 {0, 0, 0},
50 /* VK_FORMAT_B5G5R5A1_UNORM_PACK16 */
51 {0, 0, 0},
52 /* VK_FORMAT_A1R5G5B5_UNORM_PACK16 */
53 {0,
54 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
55 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
56 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
57 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
58 0},
59 /* VK_FORMAT_R8_UNORM */
60 {0,
61 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
62 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
63 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
64 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
65 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
66 /* VK_FORMAT_R8_SNORM */
67 {0,
68 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
69 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
70 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
71 /* VK_FORMAT_R8_USCALED */
72 {0, 0, 0},
73 /* VK_FORMAT_R8_SSCALED */
74 {0, 0, 0},
75 /* VK_FORMAT_R8_UINT */
76 {0,
77 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
78 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
79 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
80 /* VK_FORMAT_R8_SINT */
81 {0,
82 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
83 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
84 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
85 /* VK_FORMAT_R8_SRGB */
86 {0, 0, 0},
87 /* VK_FORMAT_R8G8_UNORM */
88 {0,
89 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
90 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
91 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
92 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
93 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
94 /* VK_FORMAT_R8G8_SNORM */
95 {0,
96 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
97 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
98 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
99 /* VK_FORMAT_R8G8_USCALED */
100 {0, 0, 0},
101 /* VK_FORMAT_R8G8_SSCALED */
102 {0, 0, 0},
103 /* VK_FORMAT_R8G8_UINT */
104 {0,
105 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
106 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
107 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
108 /* VK_FORMAT_R8G8_SINT */
109 {0,
110 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
111 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
112 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
113 /* VK_FORMAT_R8G8_SRGB */
114 {0, 0, 0},
115 /* VK_FORMAT_R8G8B8_UNORM */
116 {0, 0, 0},
117 /* VK_FORMAT_R8G8B8_SNORM */
118 {0, 0, 0},
119 /* VK_FORMAT_R8G8B8_USCALED */
120 {0, 0, 0},
121 /* VK_FORMAT_R8G8B8_SSCALED */
122 {0, 0, 0},
123 /* VK_FORMAT_R8G8B8_UINT */
124 {0, 0, 0},
125 /* VK_FORMAT_R8G8B8_SINT */
126 {0, 0, 0},
127 /* VK_FORMAT_R8G8B8_SRGB */
128 {0, 0, 0},
129 /* VK_FORMAT_B8G8R8_UNORM */
130 {0, 0, 0},
131 /* VK_FORMAT_B8G8R8_SNORM */
132 {0, 0, 0},
133 /* VK_FORMAT_B8G8R8_USCALED */
134 {0, 0, 0},
135 /* VK_FORMAT_B8G8R8_SSCALED */
136 {0, 0, 0},
137 /* VK_FORMAT_B8G8R8_UINT */
138 {0, 0, 0},
139 /* VK_FORMAT_B8G8R8_SINT */
140 {0, 0, 0},
141 /* VK_FORMAT_B8G8R8_SRGB */
142 {0, 0, 0},
143 /* VK_FORMAT_R8G8B8A8_UNORM */
144 {0,
145 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
146 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT |
147 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
148 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
149 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
150 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
151 /* VK_FORMAT_R8G8B8A8_SNORM */
152 {0,
153 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
154 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
155 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
156 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
157 /* VK_FORMAT_R8G8B8A8_USCALED */
158 {0, 0, 0},
159 /* VK_FORMAT_R8G8B8A8_SSCALED */
160 {0, 0, 0},
161 /* VK_FORMAT_R8G8B8A8_UINT */
162 {0,
163 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
164 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
165 VK_FORMAT_FEATURE_BLIT_DST_BIT,
166 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
167 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
168 /* VK_FORMAT_R8G8B8A8_SINT */
169 {0,
170 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
171 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
172 VK_FORMAT_FEATURE_BLIT_DST_BIT,
173 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
174 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
175 /* VK_FORMAT_R8G8B8A8_SRGB */
176 {0,
177 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
178 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
179 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
180 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
181 0},
182 /* VK_FORMAT_B8G8R8A8_UNORM */
183 {0,
184 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
185 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
186 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
187 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
188 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
189 /* VK_FORMAT_B8G8R8A8_SNORM */
190 {0, 0, 0},
191 /* VK_FORMAT_B8G8R8A8_USCALED */
192 {0, 0, 0},
193 /* VK_FORMAT_B8G8R8A8_SSCALED */
194 {0, 0, 0},
195 /* VK_FORMAT_B8G8R8A8_UINT */
196 {0, 0, 0},
197 /* VK_FORMAT_B8G8R8A8_SINT */
198 {0, 0, 0},
199 /* VK_FORMAT_B8G8R8A8_SRGB */
200 {0,
201 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
202 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
203 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
204 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
205 0},
206 /* VK_FORMAT_A8B8G8R8_UNORM_PACK32 */
207 {0,
208 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
209 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
210 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
211 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
212 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
213 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
214 /* VK_FORMAT_A8B8G8R8_SNORM_PACK32 */
215 {0,
216 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
217 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
218 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
219 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
220 /* VK_FORMAT_A8B8G8R8_USCALED_PACK32 */
221 {0, 0, 0},
222 /* VK_FORMAT_A8B8G8R8_SSCALED_PACK32 */
223 {0, 0, 0},
224 /* VK_FORMAT_A8B8G8R8_UINT_PACK32 */
225 {0,
226 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
227 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
228 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
229 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
230 /* VK_FORMAT_A8B8G8R8_SINT_PACK32 */
231 {0,
232 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
233 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
234 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
235 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
236 /* VK_FORMAT_A8B8G8R8_SRGB_PACK32 */
237 {0,
238 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
239 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
240 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
241 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
242 0},
243 /* VK_FORMAT_A2R10G10B10_UNORM_PACK32 */
244 {0, 0, 0},
245 /* VK_FORMAT_A2R10G10B10_SNORM_PACK32 */
246 {0, 0, 0},
247 /* VK_FORMAT_A2R10G10B10_USCALED_PACK32 */
248 {0, 0, 0},
249 /* VK_FORMAT_A2R10G10B10_SSCALED_PACK32 */
250 {0, 0, 0},
251 /* VK_FORMAT_A2R10G10B10_UINT_PACK32 */
252 {0, 0, 0},
253 /* VK_FORMAT_A2R10G10B10_SINT_PACK32 */
254 {0, 0, 0},
255 /* VK_FORMAT_A2B10G10R10_UNORM_PACK32 */
256 {0,
257 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
258 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
259 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
260 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
261 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
262 /* VK_FORMAT_A2B10G10R10_SNORM_PACK32 */
263 {0, 0, 0},
264 /* VK_FORMAT_A2B10G10R10_USCALED_PACK32 */
265 {0, 0, 0},
266 /* VK_FORMAT_A2B10G10R10_SSCALED_PACK32 */
267 {0, 0, 0},
268 /* VK_FORMAT_A2B10G10R10_UINT_PACK32 */
269 {0,
270 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
271 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
272 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
273 /* VK_FORMAT_A2B10G10R10_SINT_PACK32 */
274 {0, 0, 0},
275 /* VK_FORMAT_R16_UNORM */
276 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
277 /* VK_FORMAT_R16_SNORM */
278 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
279 /* VK_FORMAT_R16_USCALED */
280 {0, 0, 0},
281 /* VK_FORMAT_R16_SSCALED */
282 {0, 0, 0},
283 /* VK_FORMAT_R16_UINT */
284 {0,
285 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
286 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
287 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
288 /* VK_FORMAT_R16_SINT */
289 {0,
290 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
291 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
292 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
293 /* VK_FORMAT_R16_SFLOAT */
294 {0,
295 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
296 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
297 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
298 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
299 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
300 /* VK_FORMAT_R16G16_UNORM */
301 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
302 /* VK_FORMAT_R16G16_SNORM */
303 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
304 /* VK_FORMAT_R16G16_USCALED */
305 {0, 0, 0},
306 /* VK_FORMAT_R16G16_SSCALED */
307 {0, 0, 0},
308 /* VK_FORMAT_R16G16_UINT */
309 {0,
310 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
311 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
312 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
313 /* VK_FORMAT_R16G16_SINT */
314 {0,
315 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
316 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
317 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
318 /* VK_FORMAT_R16G16_SFLOAT */
319 {0,
320 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
321 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
322 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
323 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
324 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
325 /* VK_FORMAT_R16G16B16_UNORM */
326 {0, 0, 0},
327 /* VK_FORMAT_R16G16B16_SNORM */
328 {0, 0, 0},
329 /* VK_FORMAT_R16G16B16_USCALED */
330 {0, 0, 0},
331 /* VK_FORMAT_R16G16B16_SSCALED */
332 {0, 0, 0},
333 /* VK_FORMAT_R16G16B16_UINT */
334 {0, 0, 0},
335 /* VK_FORMAT_R16G16B16_SINT */
336 {0, 0, 0},
337 /* VK_FORMAT_R16G16B16_SFLOAT */
338 {0, 0, 0},
339 /* VK_FORMAT_R16G16B16A16_UNORM */
340 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
341 /* VK_FORMAT_R16G16B16A16_SNORM */
342 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
343 /* VK_FORMAT_R16G16B16A16_USCALED */
344 {0, 0, 0},
345 /* VK_FORMAT_R16G16B16A16_SSCALED */
346 {0, 0, 0},
347 /* VK_FORMAT_R16G16B16A16_UINT */
348 {0,
349 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
350 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
351 VK_FORMAT_FEATURE_BLIT_DST_BIT,
352 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
353 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
354 /* VK_FORMAT_R16G16B16A16_SINT */
355 {0,
356 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
357 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
358 VK_FORMAT_FEATURE_BLIT_DST_BIT,
359 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
360 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
361 /* VK_FORMAT_R16G16B16A16_SFLOAT */
362 {0,
363 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
364 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT |
365 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
366 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
367 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
368 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
369 /* VK_FORMAT_R32_UINT */
370 {0,
371 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
372 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT |
373 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
374 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
375 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT |
376 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT},
377 /* VK_FORMAT_R32_SINT */
378 {0,
379 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
380 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT |
381 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
382 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
383 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT |
384 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT},
385 /* VK_FORMAT_R32_SFLOAT */
386 {0,
387 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
388 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
389 VK_FORMAT_FEATURE_BLIT_DST_BIT,
390 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
391 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
392 /* VK_FORMAT_R32G32_UINT */
393 {0,
394 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
395 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
396 VK_FORMAT_FEATURE_BLIT_DST_BIT,
397 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
398 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
399 /* VK_FORMAT_R32G32_SINT */
400 {0,
401 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
402 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
403 VK_FORMAT_FEATURE_BLIT_DST_BIT,
404 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
405 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
406 /* VK_FORMAT_R32G32_SFLOAT */
407 {0,
408 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
409 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
410 VK_FORMAT_FEATURE_BLIT_DST_BIT,
411 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
412 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
413 /* VK_FORMAT_R32G32B32_UINT */
414 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
415 /* VK_FORMAT_R32G32B32_SINT */
416 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
417 /* VK_FORMAT_R32G32B32_SFLOAT */
418 {0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
419 /* VK_FORMAT_R32G32B32A32_UINT */
420 {0,
421 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
422 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
423 VK_FORMAT_FEATURE_BLIT_DST_BIT,
424 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
425 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
426 /* VK_FORMAT_R32G32B32A32_SINT */
427 {0,
428 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
429 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
430 VK_FORMAT_FEATURE_BLIT_DST_BIT,
431 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
432 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
433 /* VK_FORMAT_R32G32B32A32_SFLOAT */
434 {0,
435 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
436 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
437 VK_FORMAT_FEATURE_BLIT_DST_BIT,
438 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
439 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
440 /* VK_FORMAT_R64_UINT */
441 {0, 0, 0},
442 /* VK_FORMAT_R64_SINT */
443 {0, 0, 0},
444 /* VK_FORMAT_R64_SFLOAT */
445 {0, 0, 0},
446 /* VK_FORMAT_R64G64_UINT */
447 {0, 0, 0},
448 /* VK_FORMAT_R64G64_SINT */
449 {0, 0, 0},
450 /* VK_FORMAT_R64G64_SFLOAT */
451 {0, 0, 0},
452 /* VK_FORMAT_R64G64B64_UINT */
453 {0, 0, 0},
454 /* VK_FORMAT_R64G64B64_SINT */
455 {0, 0, 0},
456 /* VK_FORMAT_R64G64B64_SFLOAT */
457 {0, 0, 0},
458 /* VK_FORMAT_R64G64B64A64_UINT */
459 {0, 0, 0},
460 /* VK_FORMAT_R64G64B64A64_SINT */
461 {0, 0, 0},
462 /* VK_FORMAT_R64G64B64A64_SFLOAT */
463 {0, 0, 0},
464 /* VK_FORMAT_B10G11R11_UFLOAT_PACK32 */
465 {0,
466 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
467 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
468 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
469 /* VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 */
470 {0,
471 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
472 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
473 0},
474 /* VK_FORMAT_D16_UNORM */
475 {0,
476 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
477 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
478 0},
479 /* VK_FORMAT_X8_D24_UNORM_PACK32 */
480 {0, 0, 0},
481 /* VK_FORMAT_D32_SFLOAT */
482 {0, 0, 0},
483 /* VK_FORMAT_S8_UINT */
484 {0, 0, 0},
485 /* VK_FORMAT_D16_UNORM_S8_UINT */
486 {0, 0, 0},
487 /* VK_FORMAT_D24_UNORM_S8_UINT */
488 {0, 0, 0},
489 /* VK_FORMAT_D32_SFLOAT_S8_UINT */
490 {0, 0, 0},
491 /* VK_FORMAT_BC1_RGB_UNORM_BLOCK */
492 {0, 0, 0},
493 /* VK_FORMAT_BC1_RGB_SRGB_BLOCK */
494 {0, 0, 0},
495 /* VK_FORMAT_BC1_RGBA_UNORM_BLOCK */
496 {0, 0, 0},
497 /* VK_FORMAT_BC1_RGBA_SRGB_BLOCK */
498 {0, 0, 0},
499 /* VK_FORMAT_BC2_UNORM_BLOCK */
500 {0, 0, 0},
501 /* VK_FORMAT_BC2_SRGB_BLOCK */
502 {0, 0, 0},
503 /* VK_FORMAT_BC3_UNORM_BLOCK */
504 {0, 0, 0},
505 /* VK_FORMAT_BC3_SRGB_BLOCK */
506 {0, 0, 0},
507 /* VK_FORMAT_BC4_UNORM_BLOCK */
508 {0, 0, 0},
509 /* VK_FORMAT_BC4_SNORM_BLOCK */
510 {0, 0, 0},
511 /* VK_FORMAT_BC5_UNORM_BLOCK */
512 {0, 0, 0},
513 /* VK_FORMAT_BC5_SNORM_BLOCK */
514 {0, 0, 0},
515 /* VK_FORMAT_BC6H_UFLOAT_BLOCK */
516 {0, 0, 0},
517 /* VK_FORMAT_BC6H_SFLOAT_BLOCK */
518 {0, 0, 0},
519 /* VK_FORMAT_BC7_UNORM_BLOCK */
520 {0, 0, 0},
521 /* VK_FORMAT_BC7_SRGB_BLOCK */
522 {0, 0, 0},
523 /* VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK */
524 {0, 0, 0},
525 /* VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK */
526 {0, 0, 0},
527 /* VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK */
528 {0, 0, 0},
529 /* VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK */
530 {0, 0, 0},
531 /* VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK */
532 {0, 0, 0},
533 /* VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK */
534 {0, 0, 0},
535 /* VK_FORMAT_EAC_R11_UNORM_BLOCK */
536 {0, 0, 0},
537 /* VK_FORMAT_EAC_R11_SNORM_BLOCK */
538 {0, 0, 0},
539 /* VK_FORMAT_EAC_R11G11_UNORM_BLOCK */
540 {0, 0, 0},
541 /* VK_FORMAT_EAC_R11G11_SNORM_BLOCK */
542 {0, 0, 0},
543 /* VK_FORMAT_ASTC_4x4_UNORM_BLOCK */
544 {0, 0, 0},
545 /* VK_FORMAT_ASTC_4x4_SRGB_BLOCK */
546 {0, 0, 0},
547 /* VK_FORMAT_ASTC_5x4_UNORM_BLOCK */
548 {0, 0, 0},
549 /* VK_FORMAT_ASTC_5x4_SRGB_BLOCK */
550 {0, 0, 0},
551 /* VK_FORMAT_ASTC_5x5_UNORM_BLOCK */
552 {0, 0, 0},
553 /* VK_FORMAT_ASTC_5x5_SRGB_BLOCK */
554 {0, 0, 0},
555 /* VK_FORMAT_ASTC_6x5_UNORM_BLOCK */
556 {0, 0, 0},
557 /* VK_FORMAT_ASTC_6x5_SRGB_BLOCK */
558 {0, 0, 0},
559 /* VK_FORMAT_ASTC_6x6_UNORM_BLOCK */
560 {0, 0, 0},
561 /* VK_FORMAT_ASTC_6x6_SRGB_BLOCK */
562 {0, 0, 0},
563 /* VK_FORMAT_ASTC_8x5_UNORM_BLOCK */
564 {0, 0, 0},
565 /* VK_FORMAT_ASTC_8x5_SRGB_BLOCK */
566 {0, 0, 0},
567 /* VK_FORMAT_ASTC_8x6_UNORM_BLOCK */
568 {0, 0, 0},
569 /* VK_FORMAT_ASTC_8x6_SRGB_BLOCK */
570 {0, 0, 0},
571 /* VK_FORMAT_ASTC_8x8_UNORM_BLOCK */
572 {0, 0, 0},
573 /* VK_FORMAT_ASTC_8x8_SRGB_BLOCK */
574 {0, 0, 0},
575 /* VK_FORMAT_ASTC_10x5_UNORM_BLOCK */
576 {0, 0, 0},
577 /* VK_FORMAT_ASTC_10x5_SRGB_BLOCK */
578 {0, 0, 0},
579 /* VK_FORMAT_ASTC_10x6_UNORM_BLOCK */
580 {0, 0, 0},
581 /* VK_FORMAT_ASTC_10x6_SRGB_BLOCK */
582 {0, 0, 0},
583 /* VK_FORMAT_ASTC_10x8_UNORM_BLOCK */
584 {0, 0, 0},
585 /* VK_FORMAT_ASTC_10x8_SRGB_BLOCK */
586 {0, 0, 0},
587 /* VK_FORMAT_ASTC_10x10_UNORM_BLOCK */
588 {0, 0, 0},
589 /* VK_FORMAT_ASTC_10x10_SRGB_BLOCK */
590 {0, 0, 0},
591 /* VK_FORMAT_ASTC_12x10_UNORM_BLOCK */
592 {0, 0, 0},
593 /* VK_FORMAT_ASTC_12x10_SRGB_BLOCK */
594 {0, 0, 0},
595 /* VK_FORMAT_ASTC_12x12_UNORM_BLOCK */
596 {0, 0, 0},
597 /* VK_FORMAT_ASTC_12x12_SRGB_BLOCK */
598 {0, 0, 0}}};
599 } // anonymous namespace
600
GetMandatoryFormatSupport(VkFormat vkFormat)601 const VkFormatProperties &GetMandatoryFormatSupport(VkFormat vkFormat)
602 {
603 ASSERT(static_cast<uint64_t>(vkFormat) < sizeof(kFormatProperties));
604 return kFormatProperties[vkFormat];
605 }
606
607 } // namespace vk
608
609 } // namespace rx
610