File: feature_requirements_helper.h

package info (click to toggle)
vulkan-validationlayers 1.4.321.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 47,412 kB
  • sloc: cpp: 594,175; python: 11,321; sh: 24; makefile: 20; xml: 14
file content (1036 lines) | stat: -rw-r--r-- 44,773 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
// See feature_requirements.py for modifications

/***************************************************************************
 *
 * Copyright (c) 2023-2025 The Khronos Group Inc.
 * Copyright (c) 2023-2025 Valve Corporation
 * Copyright (c) 2023-2025 LunarG, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ****************************************************************************/

// NOLINTBEGIN

#include "vk_api_version.h"

#include <vulkan/vulkan.h>

namespace vkt {
enum class Feature {
    // VkPhysicalDevice16BitStorageFeatures, VkPhysicalDeviceVulkan11Features
    storageBuffer16BitAccess,
    // VkPhysicalDevice16BitStorageFeatures, VkPhysicalDeviceVulkan11Features
    storageInputOutput16,
    // VkPhysicalDevice16BitStorageFeatures, VkPhysicalDeviceVulkan11Features
    storagePushConstant16,
    // VkPhysicalDevice16BitStorageFeatures, VkPhysicalDeviceVulkan11Features
    uniformAndStorageBuffer16BitAccess,
    // VkPhysicalDevice4444FormatsFeaturesEXT
    formatA4B4G4R4,
    // VkPhysicalDevice4444FormatsFeaturesEXT
    formatA4R4G4B4,
    // VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceVulkan12Features
    storageBuffer8BitAccess,
    // VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceVulkan12Features
    storagePushConstant8,
    // VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceVulkan12Features
    uniformAndStorageBuffer8BitAccess,
    // VkPhysicalDeviceASTCDecodeFeaturesEXT
    decodeModeSharedExponent,
    // VkPhysicalDeviceAccelerationStructureFeaturesKHR
    accelerationStructure,
    // VkPhysicalDeviceAccelerationStructureFeaturesKHR
    accelerationStructureCaptureReplay,
    // VkPhysicalDeviceAccelerationStructureFeaturesKHR
    accelerationStructureHostCommands,
    // VkPhysicalDeviceAccelerationStructureFeaturesKHR
    accelerationStructureIndirectBuild,
    // VkPhysicalDeviceAccelerationStructureFeaturesKHR
    descriptorBindingAccelerationStructureUpdateAfterBind,
    // VkPhysicalDeviceAddressBindingReportFeaturesEXT
    reportAddressBinding,
    // VkPhysicalDeviceAmigoProfilingFeaturesSEC
    amigoProfiling,
    // VkPhysicalDeviceAntiLagFeaturesAMD
    antiLag,
    // VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
    attachmentFeedbackLoopDynamicState,
    // VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT
    attachmentFeedbackLoopLayout,
    // VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
    advancedBlendCoherentOperations,
    // VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
    borderColorSwizzle,
    // VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
    borderColorSwizzleFromImage,
    // VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceVulkan12Features
    bufferDeviceAddress,
    // VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceVulkan12Features
    bufferDeviceAddressCaptureReplay,
    // VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceVulkan12Features
    bufferDeviceAddressMultiDevice,
    // VkPhysicalDeviceClusterAccelerationStructureFeaturesNV
    clusterAccelerationStructure,
    // VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
    clustercullingShader,
    // VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
    multiviewClusterCullingShader,
    // VkPhysicalDeviceCoherentMemoryFeaturesAMD
    deviceCoherentMemory,
    // VkPhysicalDeviceColorWriteEnableFeaturesEXT
    colorWriteEnable,
    // VkPhysicalDeviceCommandBufferInheritanceFeaturesNV
    commandBufferInheritance,
    // VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR
    computeDerivativeGroupLinear,
    // VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR
    computeDerivativeGroupQuads,
    // VkPhysicalDeviceConditionalRenderingFeaturesEXT
    conditionalRendering,
    // VkPhysicalDeviceConditionalRenderingFeaturesEXT
    inheritedConditionalRendering,
    // VkPhysicalDeviceCooperativeMatrix2FeaturesNV
    cooperativeMatrixBlockLoads,
    // VkPhysicalDeviceCooperativeMatrix2FeaturesNV
    cooperativeMatrixConversions,
    // VkPhysicalDeviceCooperativeMatrix2FeaturesNV
    cooperativeMatrixFlexibleDimensions,
    // VkPhysicalDeviceCooperativeMatrix2FeaturesNV
    cooperativeMatrixPerElementOperations,
    // VkPhysicalDeviceCooperativeMatrix2FeaturesNV
    cooperativeMatrixReductions,
    // VkPhysicalDeviceCooperativeMatrix2FeaturesNV
    cooperativeMatrixTensorAddressing,
    // VkPhysicalDeviceCooperativeMatrix2FeaturesNV
    cooperativeMatrixWorkgroupScope,
    // VkPhysicalDeviceCooperativeMatrixFeaturesKHR, VkPhysicalDeviceCooperativeMatrixFeaturesNV
    cooperativeMatrix,
    // VkPhysicalDeviceCooperativeMatrixFeaturesKHR, VkPhysicalDeviceCooperativeMatrixFeaturesNV
    cooperativeMatrixRobustBufferAccess,
    // VkPhysicalDeviceCooperativeVectorFeaturesNV
    cooperativeVector,
    // VkPhysicalDeviceCooperativeVectorFeaturesNV
    cooperativeVectorTraining,
    // VkPhysicalDeviceCopyMemoryIndirectFeaturesNV
    indirectCopy,
    // VkPhysicalDeviceCornerSampledImageFeaturesNV
    cornerSampledImage,
    // VkPhysicalDeviceCoverageReductionModeFeaturesNV
    coverageReductionMode,
    // VkPhysicalDeviceCubicClampFeaturesQCOM
    cubicRangeClamp,
    // VkPhysicalDeviceCubicWeightsFeaturesQCOM
    selectableCubicWeights,
    // VkPhysicalDeviceCudaKernelLaunchFeaturesNV
    cudaKernelLaunchFeatures,
    // VkPhysicalDeviceCustomBorderColorFeaturesEXT
    customBorderColorWithoutFormat,
    // VkPhysicalDeviceCustomBorderColorFeaturesEXT
    customBorderColors,
    // VkPhysicalDeviceDataGraphFeaturesARM
    dataGraph,
    // VkPhysicalDeviceDataGraphFeaturesARM
    dataGraphDescriptorBuffer,
    // VkPhysicalDeviceDataGraphFeaturesARM
    dataGraphShaderModule,
    // VkPhysicalDeviceDataGraphFeaturesARM
    dataGraphSpecializationConstants,
    // VkPhysicalDeviceDataGraphFeaturesARM
    dataGraphUpdateAfterBind,
    // VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
    dedicatedAllocationImageAliasing,
    // VkPhysicalDeviceDepthBiasControlFeaturesEXT
    depthBiasControl,
    // VkPhysicalDeviceDepthBiasControlFeaturesEXT
    depthBiasExact,
    // VkPhysicalDeviceDepthBiasControlFeaturesEXT
    floatRepresentation,
    // VkPhysicalDeviceDepthBiasControlFeaturesEXT
    leastRepresentableValueForceUnormRepresentation,
    // VkPhysicalDeviceDepthClampControlFeaturesEXT
    depthClampControl,
    // VkPhysicalDeviceDepthClampZeroOneFeaturesKHR
    depthClampZeroOne,
    // VkPhysicalDeviceDepthClipControlFeaturesEXT
    depthClipControl,
    // VkPhysicalDeviceDepthClipEnableFeaturesEXT
    depthClipEnable,
    // VkPhysicalDeviceDescriptorBufferFeaturesEXT
    descriptorBuffer,
    // VkPhysicalDeviceDescriptorBufferFeaturesEXT
    descriptorBufferCaptureReplay,
    // VkPhysicalDeviceDescriptorBufferFeaturesEXT
    descriptorBufferImageLayoutIgnored,
    // VkPhysicalDeviceDescriptorBufferFeaturesEXT
    descriptorBufferPushDescriptors,
    // VkPhysicalDeviceDescriptorBufferTensorFeaturesARM
    descriptorBufferTensorDescriptors,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingPartiallyBound,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingSampledImageUpdateAfterBind,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingStorageBufferUpdateAfterBind,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingStorageImageUpdateAfterBind,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingStorageTexelBufferUpdateAfterBind,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingUniformBufferUpdateAfterBind,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingUniformTexelBufferUpdateAfterBind,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingUpdateUnusedWhilePending,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    descriptorBindingVariableDescriptorCount,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    runtimeDescriptorArray,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderInputAttachmentArrayDynamicIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderInputAttachmentArrayNonUniformIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderSampledImageArrayNonUniformIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderStorageBufferArrayNonUniformIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderStorageImageArrayNonUniformIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderStorageTexelBufferArrayDynamicIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderStorageTexelBufferArrayNonUniformIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderUniformBufferArrayNonUniformIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderUniformTexelBufferArrayDynamicIndexing,
    // VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceVulkan12Features
    shaderUniformTexelBufferArrayNonUniformIndexing,
    // VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV
    descriptorPoolOverallocation,
    // VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
    descriptorSetHostMapping,
    // VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
    deviceGeneratedCompute,
    // VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
    deviceGeneratedComputeCaptureReplay,
    // VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
    deviceGeneratedComputePipelines,
    // VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
    deviceGeneratedCommands,
    // VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
    dynamicGeneratedPipelineLayout,
    // VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
    deviceMemoryReport,
    // VkPhysicalDeviceDiagnosticsConfigFeaturesNV
    diagnosticsConfig,
    // VkPhysicalDeviceDisplacementMicromapFeaturesNV
    displacementMicromap,
    // VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceVulkan13Features
    dynamicRendering,
    // VkPhysicalDeviceDynamicRenderingLocalReadFeatures, VkPhysicalDeviceVulkan14Features
    dynamicRenderingLocalRead,
    // VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
    dynamicRenderingUnusedAttachments,
    // VkPhysicalDeviceExclusiveScissorFeaturesNV
    exclusiveScissor,
    // VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
    extendedDynamicState2,
    // VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
    extendedDynamicState2LogicOp,
    // VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
    extendedDynamicState2PatchControlPoints,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3AlphaToCoverageEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3AlphaToOneEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ColorBlendAdvanced,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ColorBlendEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ColorBlendEquation,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ColorWriteMask,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ConservativeRasterizationMode,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3CoverageModulationMode,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3CoverageModulationTable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3CoverageModulationTableEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3CoverageReductionMode,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3CoverageToColorEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3CoverageToColorLocation,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3DepthClampEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3DepthClipEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3DepthClipNegativeOneToOne,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ExtraPrimitiveOverestimationSize,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3LineRasterizationMode,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3LineStippleEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3LogicOpEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3PolygonMode,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ProvokingVertexMode,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3RasterizationSamples,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3RasterizationStream,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3RepresentativeFragmentTestEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3SampleLocationsEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3SampleMask,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ShadingRateImageEnable,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3TessellationDomainOrigin,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ViewportSwizzle,
    // VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
    extendedDynamicState3ViewportWScalingEnable,
    // VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
    extendedDynamicState,
    // VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
    extendedSparseAddressSpace,
    // VkPhysicalDeviceExternalFormatResolveFeaturesANDROID
    externalFormatResolve,
    // VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
    externalMemoryRDMA,
    // VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
    screenBufferImport,
    // VkPhysicalDeviceFaultFeaturesEXT
    deviceFault,
    // VkPhysicalDeviceFaultFeaturesEXT
    deviceFaultVendorBinary,
    // VkPhysicalDeviceFeatures
    alphaToOne,
    // VkPhysicalDeviceFeatures
    depthBiasClamp,
    // VkPhysicalDeviceFeatures
    depthBounds,
    // VkPhysicalDeviceFeatures
    depthClamp,
    // VkPhysicalDeviceFeatures
    drawIndirectFirstInstance,
    // VkPhysicalDeviceFeatures
    dualSrcBlend,
    // VkPhysicalDeviceFeatures
    fillModeNonSolid,
    // VkPhysicalDeviceFeatures
    fragmentStoresAndAtomics,
    // VkPhysicalDeviceFeatures
    fullDrawIndexUint32,
    // VkPhysicalDeviceFeatures
    geometryShader,
    // VkPhysicalDeviceFeatures
    imageCubeArray,
    // VkPhysicalDeviceFeatures
    independentBlend,
    // VkPhysicalDeviceFeatures
    inheritedQueries,
    // VkPhysicalDeviceFeatures
    largePoints,
    // VkPhysicalDeviceFeatures
    logicOp,
    // VkPhysicalDeviceFeatures
    multiDrawIndirect,
    // VkPhysicalDeviceFeatures
    multiViewport,
    // VkPhysicalDeviceFeatures
    occlusionQueryPrecise,
    // VkPhysicalDeviceFeatures
    pipelineStatisticsQuery,
    // VkPhysicalDeviceFeatures
    robustBufferAccess,
    // VkPhysicalDeviceFeatures
    sampleRateShading,
    // VkPhysicalDeviceFeatures
    samplerAnisotropy,
    // VkPhysicalDeviceFeatures
    shaderClipDistance,
    // VkPhysicalDeviceFeatures
    shaderCullDistance,
    // VkPhysicalDeviceFeatures
    shaderFloat64,
    // VkPhysicalDeviceFeatures
    shaderImageGatherExtended,
    // VkPhysicalDeviceFeatures
    shaderInt16,
    // VkPhysicalDeviceFeatures
    shaderInt64,
    // VkPhysicalDeviceFeatures
    shaderResourceMinLod,
    // VkPhysicalDeviceFeatures
    shaderResourceResidency,
    // VkPhysicalDeviceFeatures
    shaderSampledImageArrayDynamicIndexing,
    // VkPhysicalDeviceFeatures
    shaderStorageBufferArrayDynamicIndexing,
    // VkPhysicalDeviceFeatures
    shaderStorageImageArrayDynamicIndexing,
    // VkPhysicalDeviceFeatures
    shaderStorageImageExtendedFormats,
    // VkPhysicalDeviceFeatures
    shaderStorageImageMultisample,
    // VkPhysicalDeviceFeatures
    shaderStorageImageReadWithoutFormat,
    // VkPhysicalDeviceFeatures
    shaderStorageImageWriteWithoutFormat,
    // VkPhysicalDeviceFeatures
    shaderTessellationAndGeometryPointSize,
    // VkPhysicalDeviceFeatures
    shaderUniformBufferArrayDynamicIndexing,
    // VkPhysicalDeviceFeatures
    sparseBinding,
    // VkPhysicalDeviceFeatures
    sparseResidency16Samples,
    // VkPhysicalDeviceFeatures
    sparseResidency2Samples,
    // VkPhysicalDeviceFeatures
    sparseResidency4Samples,
    // VkPhysicalDeviceFeatures
    sparseResidency8Samples,
    // VkPhysicalDeviceFeatures
    sparseResidencyAliased,
    // VkPhysicalDeviceFeatures
    sparseResidencyBuffer,
    // VkPhysicalDeviceFeatures
    sparseResidencyImage2D,
    // VkPhysicalDeviceFeatures
    sparseResidencyImage3D,
    // VkPhysicalDeviceFeatures
    tessellationShader,
    // VkPhysicalDeviceFeatures
    textureCompressionASTC_LDR,
    // VkPhysicalDeviceFeatures
    textureCompressionBC,
    // VkPhysicalDeviceFeatures
    textureCompressionETC2,
    // VkPhysicalDeviceFeatures
    variableMultisampleRate,
    // VkPhysicalDeviceFeatures
    vertexPipelineStoresAndAtomics,
    // VkPhysicalDeviceFeatures
    wideLines,
    // VkPhysicalDeviceFormatPackFeaturesARM
    formatPack,
    // VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
    fragmentDensityMapDeferred,
    // VkPhysicalDeviceFragmentDensityMapFeaturesEXT
    fragmentDensityMap,
    // VkPhysicalDeviceFragmentDensityMapFeaturesEXT
    fragmentDensityMapDynamic,
    // VkPhysicalDeviceFragmentDensityMapFeaturesEXT
    fragmentDensityMapNonSubsampledImages,
    // VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
    fragmentDensityMapLayered,
    // VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
    fragmentDensityMapOffset,
    // VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
    fragmentShaderBarycentric,
    // VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
    fragmentShaderPixelInterlock,
    // VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
    fragmentShaderSampleInterlock,
    // VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
    fragmentShaderShadingRateInterlock,
    // VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
    fragmentShadingRateEnums,
    // VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
    noInvocationFragmentShadingRates,
    // VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
    supersampleFragmentShadingRates,
    // VkPhysicalDeviceFragmentShadingRateFeaturesKHR
    attachmentFragmentShadingRate,
    // VkPhysicalDeviceFragmentShadingRateFeaturesKHR
    pipelineFragmentShadingRate,
    // VkPhysicalDeviceFragmentShadingRateFeaturesKHR
    primitiveFragmentShadingRate,
    // VkPhysicalDeviceFrameBoundaryFeaturesEXT
    frameBoundary,
    // VkPhysicalDeviceGlobalPriorityQueryFeatures, VkPhysicalDeviceVulkan14Features
    globalPriorityQuery,
    // VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
    graphicsPipelineLibrary,
    // VkPhysicalDeviceHdrVividFeaturesHUAWEI
    hdrVivid,
    // VkPhysicalDeviceHostImageCopyFeatures, VkPhysicalDeviceVulkan14Features
    hostImageCopy,
    // VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceVulkan12Features
    hostQueryReset,
    // VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
    image2DViewOf3D,
    // VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
    sampler2DViewOf3D,
    // VkPhysicalDeviceImageAlignmentControlFeaturesMESA
    imageAlignmentControl,
    // VkPhysicalDeviceImageCompressionControlFeaturesEXT
    imageCompressionControl,
    // VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
    imageCompressionControlSwapchain,
    // VkPhysicalDeviceImageProcessing2FeaturesQCOM
    textureBlockMatch2,
    // VkPhysicalDeviceImageProcessingFeaturesQCOM
    textureBlockMatch,
    // VkPhysicalDeviceImageProcessingFeaturesQCOM
    textureBoxFilter,
    // VkPhysicalDeviceImageProcessingFeaturesQCOM
    textureSampleWeighted,
    // VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceVulkan13Features
    robustImageAccess,
    // VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
    imageSlicedViewOf3D,
    // VkPhysicalDeviceImageViewMinLodFeaturesEXT
    minLod,
    // VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceVulkan12Features
    imagelessFramebuffer,
    // VkPhysicalDeviceIndexTypeUint8Features, VkPhysicalDeviceVulkan14Features
    indexTypeUint8,
    // VkPhysicalDeviceInheritedViewportScissorFeaturesNV
    inheritedViewportScissor2D,
    // VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceVulkan13Features
    descriptorBindingInlineUniformBlockUpdateAfterBind,
    // VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceVulkan13Features
    inlineUniformBlock,
    // VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
    invocationMask,
    // VkPhysicalDeviceLegacyDitheringFeaturesEXT
    legacyDithering,
    // VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT
    legacyVertexAttributes,
    // VkPhysicalDeviceLineRasterizationFeatures, VkPhysicalDeviceVulkan14Features
    bresenhamLines,
    // VkPhysicalDeviceLineRasterizationFeatures, VkPhysicalDeviceVulkan14Features
    rectangularLines,
    // VkPhysicalDeviceLineRasterizationFeatures, VkPhysicalDeviceVulkan14Features
    smoothLines,
    // VkPhysicalDeviceLineRasterizationFeatures, VkPhysicalDeviceVulkan14Features
    stippledBresenhamLines,
    // VkPhysicalDeviceLineRasterizationFeatures, VkPhysicalDeviceVulkan14Features
    stippledRectangularLines,
    // VkPhysicalDeviceLineRasterizationFeatures, VkPhysicalDeviceVulkan14Features
    stippledSmoothLines,
    // VkPhysicalDeviceLinearColorAttachmentFeaturesNV
    linearColorAttachment,
    // VkPhysicalDeviceMaintenance4Features, VkPhysicalDeviceVulkan13Features
    maintenance4,
    // VkPhysicalDeviceMaintenance5Features, VkPhysicalDeviceVulkan14Features
    maintenance5,
    // VkPhysicalDeviceMaintenance6Features, VkPhysicalDeviceVulkan14Features
    maintenance6,
    // VkPhysicalDeviceMaintenance7FeaturesKHR
    maintenance7,
    // VkPhysicalDeviceMaintenance8FeaturesKHR
    maintenance8,
    // VkPhysicalDeviceMaintenance9FeaturesKHR
    maintenance9,
    // VkPhysicalDeviceMapMemoryPlacedFeaturesEXT
    memoryMapPlaced,
    // VkPhysicalDeviceMapMemoryPlacedFeaturesEXT
    memoryMapRangePlaced,
    // VkPhysicalDeviceMapMemoryPlacedFeaturesEXT
    memoryUnmapReserve,
    // VkPhysicalDeviceMemoryDecompressionFeaturesNV
    memoryDecompression,
    // VkPhysicalDeviceMemoryPriorityFeaturesEXT
    memoryPriority,
    // VkPhysicalDeviceMeshShaderFeaturesEXT
    meshShaderQueries,
    // VkPhysicalDeviceMeshShaderFeaturesEXT
    multiviewMeshShader,
    // VkPhysicalDeviceMeshShaderFeaturesEXT
    primitiveFragmentShadingRateMeshShader,
    // VkPhysicalDeviceMeshShaderFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV
    meshShader,
    // VkPhysicalDeviceMeshShaderFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV
    taskShader,
    // VkPhysicalDeviceMultiDrawFeaturesEXT
    multiDraw,
    // VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
    multisampledRenderToSingleSampled,
    // VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceVulkan11Features
    multiview,
    // VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceVulkan11Features
    multiviewGeometryShader,
    // VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceVulkan11Features
    multiviewTessellationShader,
    // VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
    multiviewPerViewRenderAreas,
    // VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
    multiviewPerViewViewports,
    // VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
    mutableDescriptorType,
    // VkPhysicalDeviceNestedCommandBufferFeaturesEXT
    nestedCommandBuffer,
    // VkPhysicalDeviceNestedCommandBufferFeaturesEXT
    nestedCommandBufferRendering,
    // VkPhysicalDeviceNestedCommandBufferFeaturesEXT
    nestedCommandBufferSimultaneousUse,
    // VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT
    nonSeamlessCubeMap,
    // VkPhysicalDeviceOpacityMicromapFeaturesEXT
    micromap,
    // VkPhysicalDeviceOpacityMicromapFeaturesEXT
    micromapCaptureReplay,
    // VkPhysicalDeviceOpacityMicromapFeaturesEXT
    micromapHostCommands,
    // VkPhysicalDeviceOpticalFlowFeaturesNV
    opticalFlow,
    // VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
    pageableDeviceLocalMemory,
    // VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV
    partitionedAccelerationStructure,
    // VkPhysicalDevicePerStageDescriptorSetFeaturesNV
    dynamicPipelineLayout,
    // VkPhysicalDevicePerStageDescriptorSetFeaturesNV
    perStageDescriptorSet,
    // VkPhysicalDevicePerformanceQueryFeaturesKHR
    performanceCounterMultipleQueryPools,
    // VkPhysicalDevicePerformanceQueryFeaturesKHR
    performanceCounterQueryPools,
    // VkPhysicalDevicePipelineBinaryFeaturesKHR
    pipelineBinaries,
    // VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
    pipelineCacheIncrementalMode,
    // VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDeviceVulkan13Features
    pipelineCreationCacheControl,
    // VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
    pipelineExecutableInfo,
    // VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
    pipelineLibraryGroupHandles,
    // VkPhysicalDevicePipelineOpacityMicromapFeaturesARM
    pipelineOpacityMicromap,
    // VkPhysicalDevicePipelinePropertiesFeaturesEXT
    pipelinePropertiesIdentifier,
    // VkPhysicalDevicePipelineProtectedAccessFeatures, VkPhysicalDeviceVulkan14Features
    pipelineProtectedAccess,
    // VkPhysicalDevicePipelineRobustnessFeatures, VkPhysicalDeviceVulkan14Features
    pipelineRobustness,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    constantAlphaColorBlendFactors,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    events,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    imageView2DOn3DImage,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    imageViewFormatReinterpretation,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    imageViewFormatSwizzle,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    multisampleArrayImage,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    mutableComparisonSamplers,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    pointPolygons,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    samplerMipLodBias,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    separateStencilMaskRef,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    shaderSampleRateInterpolationFunctions,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    tessellationIsolines,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    tessellationPointMode,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    triangleFans,
    // VkPhysicalDevicePortabilitySubsetFeaturesKHR
    vertexAttributeAccessBeyondStride,
    // VkPhysicalDevicePresentBarrierFeaturesNV
    presentBarrier,
    // VkPhysicalDevicePresentId2FeaturesKHR
    presentId2,
    // VkPhysicalDevicePresentIdFeaturesKHR
    presentId,
    // VkPhysicalDevicePresentMeteringFeaturesNV
    presentMetering,
    // VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
    presentModeFifoLatestReady,
    // VkPhysicalDevicePresentWait2FeaturesKHR
    presentWait2,
    // VkPhysicalDevicePresentWaitFeaturesKHR
    presentWait,
    // VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
    primitiveTopologyListRestart,
    // VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
    primitiveTopologyPatchListRestart,
    // VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
    primitivesGeneratedQuery,
    // VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
    primitivesGeneratedQueryWithNonZeroStreams,
    // VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
    primitivesGeneratedQueryWithRasterizerDiscard,
    // VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceVulkan13Features
    privateData,
    // VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceVulkan11Features
    protectedMemory,
    // VkPhysicalDeviceProvokingVertexFeaturesEXT
    provokingVertexLast,
    // VkPhysicalDeviceProvokingVertexFeaturesEXT
    transformFeedbackPreservesProvokingVertex,
    // VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
    formatRgba10x6WithoutYCbCrSampler,
    // VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
    rasterizationOrderColorAttachmentAccess,
    // VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
    rasterizationOrderDepthAttachmentAccess,
    // VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
    rasterizationOrderStencilAttachmentAccess,
    // VkPhysicalDeviceRawAccessChainsFeaturesNV
    shaderRawAccessChains,
    // VkPhysicalDeviceRayQueryFeaturesKHR
    rayQuery,
    // VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV
    rayTracingInvocationReorder,
    // VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
    linearSweptSpheres,
    // VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
    spheres,
    // VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
    rayTracingMaintenance1,
    // VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
    rayTracingPipelineTraceRaysIndirect2,
    // VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
    rayTracingMotionBlur,
    // VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
    rayTracingMotionBlurPipelineTraceRaysIndirect,
    // VkPhysicalDeviceRayTracingPipelineFeaturesKHR
    rayTracingPipeline,
    // VkPhysicalDeviceRayTracingPipelineFeaturesKHR
    rayTracingPipelineShaderGroupHandleCaptureReplay,
    // VkPhysicalDeviceRayTracingPipelineFeaturesKHR
    rayTracingPipelineShaderGroupHandleCaptureReplayMixed,
    // VkPhysicalDeviceRayTracingPipelineFeaturesKHR
    rayTracingPipelineTraceRaysIndirect,
    // VkPhysicalDeviceRayTracingPipelineFeaturesKHR
    rayTraversalPrimitiveCulling,
    // VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR
    rayTracingPositionFetch,
    // VkPhysicalDeviceRayTracingValidationFeaturesNV
    rayTracingValidation,
    // VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG
    relaxedLineRasterization,
    // VkPhysicalDeviceRenderPassStripedFeaturesARM
    renderPassStriped,
    // VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
    representativeFragmentTest,
    // VkPhysicalDeviceRobustness2FeaturesKHR
    nullDescriptor,
    // VkPhysicalDeviceRobustness2FeaturesKHR
    robustBufferAccess2,
    // VkPhysicalDeviceRobustness2FeaturesKHR
    robustImageAccess2,
    // VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceVulkan11Features
    samplerYcbcrConversion,
    // VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceVulkan12Features
    scalarBlockLayout,
    // VkPhysicalDeviceSchedulingControlsFeaturesARM
    schedulingControls,
    // VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceVulkan12Features
    separateDepthStencilLayouts,
    // VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
    shaderFloat16VectorAtomics,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderBufferFloat16AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderBufferFloat16AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderBufferFloat16Atomics,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderBufferFloat32AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderBufferFloat64AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderImageFloat32AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderSharedFloat16AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderSharedFloat16AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderSharedFloat16Atomics,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderSharedFloat32AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    shaderSharedFloat64AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
    sparseImageFloat32AtomicMinMax,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderBufferFloat32AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderBufferFloat32Atomics,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderBufferFloat64AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderBufferFloat64Atomics,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderImageFloat32AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderImageFloat32Atomics,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderSharedFloat32AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderSharedFloat32Atomics,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderSharedFloat64AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    shaderSharedFloat64Atomics,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    sparseImageFloat32AtomicAdd,
    // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
    sparseImageFloat32Atomics,
    // VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceVulkan12Features
    shaderBufferInt64Atomics,
    // VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceVulkan12Features
    shaderSharedInt64Atomics,
    // VkPhysicalDeviceShaderBfloat16FeaturesKHR
    shaderBFloat16CooperativeMatrix,
    // VkPhysicalDeviceShaderBfloat16FeaturesKHR
    shaderBFloat16DotProduct,
    // VkPhysicalDeviceShaderBfloat16FeaturesKHR
    shaderBFloat16Type,
    // VkPhysicalDeviceShaderClockFeaturesKHR
    shaderDeviceClock,
    // VkPhysicalDeviceShaderClockFeaturesKHR
    shaderSubgroupClock,
    // VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM
    shaderCoreBuiltins,
    // VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceVulkan13Features
    shaderDemoteToHelperInvocation,
    // VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceVulkan11Features
    shaderDrawParameters,
    // VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
    shaderEarlyAndLateFragmentTests,
    // VkPhysicalDeviceShaderEnqueueFeaturesAMDX
    shaderEnqueue,
    // VkPhysicalDeviceShaderEnqueueFeaturesAMDX
    shaderMeshEnqueue,
    // VkPhysicalDeviceShaderExpectAssumeFeatures, VkPhysicalDeviceVulkan14Features
    shaderExpectAssume,
    // VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceVulkan12Features
    shaderFloat16,
    // VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceVulkan12Features
    shaderInt8,
    // VkPhysicalDeviceShaderFloat8FeaturesEXT
    shaderFloat8,
    // VkPhysicalDeviceShaderFloat8FeaturesEXT
    shaderFloat8CooperativeMatrix,
    // VkPhysicalDeviceShaderFloatControls2Features, VkPhysicalDeviceVulkan14Features
    shaderFloatControls2,
    // VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT
    shaderImageInt64Atomics,
    // VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT
    sparseImageInt64Atomics,
    // VkPhysicalDeviceShaderImageFootprintFeaturesNV
    imageFootprint,
    // VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceVulkan13Features
    shaderIntegerDotProduct,
    // VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
    shaderIntegerFunctions2,
    // VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR
    shaderMaximalReconvergence,
    // VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT
    shaderModuleIdentifier,
    // VkPhysicalDeviceShaderObjectFeaturesEXT
    shaderObject,
    // VkPhysicalDeviceShaderQuadControlFeaturesKHR
    shaderQuadControl,
    // VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR
    shaderRelaxedExtendedInstruction,
    // VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT
    shaderReplicatedComposites,
    // VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
    shaderSMBuiltins,
    // VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceVulkan12Features
    shaderSubgroupExtendedTypes,
    // VkPhysicalDeviceShaderSubgroupRotateFeatures, VkPhysicalDeviceVulkan14Features
    shaderSubgroupRotate,
    // VkPhysicalDeviceShaderSubgroupRotateFeatures, VkPhysicalDeviceVulkan14Features
    shaderSubgroupRotateClustered,
    // VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
    shaderSubgroupUniformControlFlow,
    // VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceVulkan13Features
    shaderTerminateInvocation,
    // VkPhysicalDeviceShaderTileImageFeaturesEXT
    shaderTileImageColorReadAccess,
    // VkPhysicalDeviceShaderTileImageFeaturesEXT
    shaderTileImageDepthReadAccess,
    // VkPhysicalDeviceShaderTileImageFeaturesEXT
    shaderTileImageStencilReadAccess,
    // VkPhysicalDeviceShadingRateImageFeaturesNV
    shadingRateCoarseSampleOrder,
    // VkPhysicalDeviceShadingRateImageFeaturesNV
    shadingRateImage,
    // VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceVulkan13Features
    computeFullSubgroups,
    // VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceVulkan13Features
    subgroupSizeControl,
    // VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
    subpassMergeFeedback,
    // VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
    subpassShading,
    // VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR
    swapchainMaintenance1,
    // VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceVulkan13Features
    synchronization2,
    // VkPhysicalDeviceTensorFeaturesARM
    descriptorBindingStorageTensorUpdateAfterBind,
    // VkPhysicalDeviceTensorFeaturesARM
    shaderStorageTensorArrayDynamicIndexing,
    // VkPhysicalDeviceTensorFeaturesARM
    shaderStorageTensorArrayNonUniformIndexing,
    // VkPhysicalDeviceTensorFeaturesARM
    shaderTensorAccess,
    // VkPhysicalDeviceTensorFeaturesARM
    tensorNonPacked,
    // VkPhysicalDeviceTensorFeaturesARM
    tensors,
    // VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
    texelBufferAlignment,
    // VkPhysicalDeviceTextureCompressionASTCHDRFeatures, VkPhysicalDeviceVulkan13Features
    textureCompressionASTC_HDR,
    // VkPhysicalDeviceTileMemoryHeapFeaturesQCOM
    tileMemoryHeap,
    // VkPhysicalDeviceTilePropertiesFeaturesQCOM
    tileProperties,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShading,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingAnisotropicApron,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingApron,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingAtomicOps,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingColorAttachments,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingDepthAttachments,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingDispatchTile,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingFragmentStage,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingImageProcessing,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingInputAttachments,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingPerTileDispatch,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingPerTileDraw,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingSampledAttachments,
    // VkPhysicalDeviceTileShadingFeaturesQCOM
    tileShadingStencilAttachments,
    // VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceVulkan12Features
    timelineSemaphore,
    // VkPhysicalDeviceTransformFeedbackFeaturesEXT
    geometryStreams,
    // VkPhysicalDeviceTransformFeedbackFeaturesEXT
    transformFeedback,
    // VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR
    unifiedImageLayouts,
    // VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR
    unifiedImageLayoutsVideo,
    // VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVulkan12Features
    uniformBufferStandardLayout,
    // VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVulkan11Features
    variablePointers,
    // VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVulkan11Features
    variablePointersStorageBuffer,
    // VkPhysicalDeviceVertexAttributeDivisorFeatures, VkPhysicalDeviceVulkan14Features
    vertexAttributeInstanceRateDivisor,
    // VkPhysicalDeviceVertexAttributeDivisorFeatures, VkPhysicalDeviceVulkan14Features
    vertexAttributeInstanceRateZeroDivisor,
    // VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT
    vertexAttributeRobustness,
    // VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
    vertexInputDynamicState,
    // VkPhysicalDeviceVideoDecodeVP9FeaturesKHR
    videoDecodeVP9,
    // VkPhysicalDeviceVideoEncodeAV1FeaturesKHR
    videoEncodeAV1,
    // VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR
    videoEncodeIntraRefresh,
    // VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR
    videoEncodeQuantizationMap,
    // VkPhysicalDeviceVideoMaintenance1FeaturesKHR
    videoMaintenance1,
    // VkPhysicalDeviceVideoMaintenance2FeaturesKHR
    videoMaintenance2,
    // VkPhysicalDeviceVulkan12Features
    descriptorIndexing,
    // VkPhysicalDeviceVulkan12Features
    drawIndirectCount,
    // VkPhysicalDeviceVulkan12Features
    samplerFilterMinmax,
    // VkPhysicalDeviceVulkan12Features
    samplerMirrorClampToEdge,
    // VkPhysicalDeviceVulkan12Features
    shaderOutputLayer,
    // VkPhysicalDeviceVulkan12Features
    shaderOutputViewportIndex,
    // VkPhysicalDeviceVulkan12Features
    subgroupBroadcastDynamicId,
    // VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkanMemoryModelFeatures
    vulkanMemoryModel,
    // VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkanMemoryModelFeatures
    vulkanMemoryModelAvailabilityVisibilityChains,
    // VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkanMemoryModelFeatures
    vulkanMemoryModelDeviceScope,
    // VkPhysicalDeviceVulkan13Features, VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
    shaderZeroInitializeWorkgroupMemory,
    // VkPhysicalDeviceVulkan14Features
    pushDescriptor,
    // VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
    workgroupMemoryExplicitLayout,
    // VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
    workgroupMemoryExplicitLayout16BitAccess,
    // VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
    workgroupMemoryExplicitLayout8BitAccess,
    // VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
    workgroupMemoryExplicitLayoutScalarBlockLayout,
    // VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
    ycbcr2plane444Formats,
    // VkPhysicalDeviceYcbcrDegammaFeaturesQCOM
    ycbcrDegamma,
    // VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
    ycbcrImageArrays,
    // VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
    zeroInitializeDeviceMemory,
};

struct FeatureAndName {
    VkBool32 *feature;
    const char *name;
};

// Find or add the correct VkPhysicalDeviceFeature struct in `pnext_chain` based on `feature`,
// a vkt::Feature enum value, and set feature to VK_TRUE
FeatureAndName AddFeature(APIVersion api_version, vkt::Feature feature, void **inout_pnext_chain);

}  // namespace vkt

// NOLINTEND