• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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