@@ -552,6 +552,103 @@ struct SPhysicalDeviceFeatures
552
552
bool rayTracingMotionBlur = false ;
553
553
bool rayTracingMotionBlurPipelineTraceRaysIndirect = false ;
554
554
555
+ /* CoverageReductionModeFeaturesNV */ /* VK_NV_coverage_reduction_mode */
556
+ bool coverageReductionMode;
557
+
558
+ /* DeviceGeneratedCommandsFeaturesNV */ /* VK_NV_device_generated_commands */
559
+ bool deviceGeneratedCommands = false ;
560
+
561
+ /* MeshShaderFeaturesNV */ /* VK_NV_mesh_shader */
562
+ bool taskShader = false ;
563
+ bool meshShader = false ;
564
+
565
+ /* RepresentativeFragmentTestFeaturesNV */ /* VK_NV_representative_fragment_test */
566
+ bool representativeFragmentTest = false ;
567
+
568
+ /* VK_AMD_mixed_attachment_samples */ /* OR */ /* VK_NV_framebuffer_mixed_samples */
569
+ bool mixedAttachmentSamples = false ;
570
+
571
+ /* VK_EXT_hdr_metadata */
572
+ bool hdrMetadata = false ;
573
+
574
+ /* VK_GOOGLE_display_timing */
575
+ bool displayTiming = false ;
576
+
577
+ /* VK_AMD_rasterization_order */
578
+ bool rasterizationOrder = false ;
579
+
580
+ /* VK_AMD_shader_explicit_vertex_parameter */
581
+ bool shaderExplicitVertexParameter = false ;
582
+
583
+ /* VK_AMD_shader_info */
584
+ bool shaderInfoAMD = false ;
585
+
586
+ // [TODO] Promoted to VK1.1 core, haven't updated API to match
587
+ /* VK_KHR_descriptor_update_template */
588
+
589
+ // [TODO] Always enable, expose as limit
590
+ /* VK_NV_sample_mask_override_coverage */
591
+
592
+ // [TODO] Always enable, have it contribute to shaderSubgroup reporting & report as limit
593
+ /* VK_NV_shader_subgroup_partitioned */
594
+
595
+ // [TODO] Always enable, expose as limit
596
+ /* VK_AMD_gcn_shader */
597
+
598
+ // [TODO] Always enable, expose as limit (Note: Promoted to VK_KHR_shader_float16_int8)
599
+ /* VK_AMD_gpu_shader_half_float */
600
+
601
+ // [TODO] Always enable, expose as limit (Note: Promoted to VK_AMD_gpu_shader_int16)
602
+ /* VK_AMD_gpu_shader_int16 */
603
+
604
+ // [TODO] Always enable, have it contribute to shaderSubgroup reporting
605
+ /* VK_AMD_shader_ballot */
606
+
607
+ // [TODO] Always enable, expose as limit
608
+ /* VK_AMD_shader_image_load_store_lod */
609
+
610
+ // [TODO] Enable when available, report as limit
611
+ /* VK_AMD_shader_trinary_minmax */
612
+
613
+ // [TODO] needs to figure out how extending our LOAD_OP enum would affect the GL backend
614
+ /* VK_EXT_load_store_op_none */
615
+
616
+ // [TODO] Always enable, expose as limit
617
+ /* VK_EXT_post_depth_coverage */
618
+
619
+ // [TODO] Always enable, expose as limit
620
+ /* VK_EXT_shader_stencil_export */
621
+
622
+ // [TODO] Always enable, expose as limit
623
+ /* VK_GOOGLE_decorate_string */
624
+
625
+ // [TODO] Always enable, expose as limit
626
+ /* VK_KHR_external_fence_fd */
627
+
628
+ // [TODO] Always enable, expose as limit
629
+ /* VK_KHR_external_fence_win32 */
630
+
631
+ // [TODO] Always enable, expose as limit
632
+ /* VK_KHR_external_memory_fd */
633
+
634
+ // [TODO] Always enable, expose as limit
635
+ /* VK_KHR_external_memory_win32 */
636
+
637
+ // [TODO] Always enable, expose as limit
638
+ /* VK_KHR_external_semaphore_fd */
639
+
640
+ // [TODO] Always enable, expose as limit
641
+ /* VK_KHR_external_semaphore_win32 */
642
+
643
+ // [TODO] Shader extension, always enable, expose as limit
644
+ /* VK_KHR_shader_non_semantic_info */
645
+
646
+ // [TODO] Always enable, expose as limit
647
+ /* VK_NV_geometry_shader_passthrough */
648
+
649
+ // [TODO] Always enable, expose as limit
650
+ /* VK_NV_viewport_swizzle */
651
+
555
652
// Enabled by Default, Moved to Limits
556
653
// bool shaderOutputViewportIndex; // ALIAS: VK_EXT_shader_viewport_index_layer
557
654
// bool shaderOutputLayer; // ALIAS: VK_EXT_shader_viewport_index_layer
@@ -568,14 +665,22 @@ struct SPhysicalDeviceFeatures
568
665
/* ShaderImageFootprintFeaturesNV */ /* VK_NV_shader_image_footprint */
569
666
// bool imageFootprint;
570
667
668
+ // [TODO LATER] Won't expose for now, API changes necessary
669
+ /* VK_AMD_texture_gather_bias_lod */
670
+
671
+ // [TODO LATER] requires extra API work to use
672
+ // GL Hint: in GL/GLES this is NV_scissor_exclusive
673
+ /* ExclusiveScissorFeaturesNV */ /* VK_NV_scissor_exclusive */
674
+ // bool exclusiveScissor;
675
+
676
+ // [TODO LATER] when we do multi-gpu
677
+ /* ExternalMemoryRDMAFeaturesNV */ /* VK_NV_external_memory_rdma */
678
+ // bool externalMemoryRDMA;
679
+
571
680
// [DO NOT EXPOSE] for a very long time
572
681
/* CornerSampledImageFeaturesNV */ /* VK_NV_corner_sampled_image */
573
682
// bool cornerSampledImage;
574
683
575
- // [TODO]
576
- /* CoverageReductionModeFeaturesNV */ /* VK_NV_coverage_reduction_mode */
577
- // VkCoverageReductionModeNV coverageReductionMode;
578
-
579
684
// [DO NOT EXPOSE] insane oxymoron, dedicated means dedicated, not aliased, won't expose
580
685
/* DedicatedAllocationImageAliasingFeaturesNV */ /* VK_NV_dedicated_allocation_image_aliasing */
581
686
// bool dedicatedAllocationImageAliasing;
@@ -584,14 +689,6 @@ struct SPhysicalDeviceFeatures
584
689
/* DiagnosticsConfigFeaturesNV */ /* VK_NV_device_diagnostics_config */
585
690
// bool diagnosticsConfig;
586
691
587
- // [TODO]
588
- /* DeviceGeneratedCommandsFeaturesNV */ /* VK_NV_device_generated_commands */
589
- // bool deviceGeneratedCommands;
590
-
591
- // [TODO] when we do multi-gpu
592
- /* ExternalMemoryRDMAFeaturesNV */ /* VK_NV_external_memory_rdma */
593
- // bool externalMemoryRDMA;
594
-
595
692
// [DEPRECATED]
596
693
/* FragmentShaderBarycentricFeaturesNV */ /* VK_NV_fragment_shader_barycentric */
597
694
// bool fragmentShaderBarycentric;
@@ -610,20 +707,6 @@ struct SPhysicalDeviceFeatures
610
707
/* LinearColorAttachmentFeaturesNV */ /* VK_NV_linear_color_attachment */
611
708
// bool linearColorAttachment;
612
709
613
- // [TODO]
614
- /* MeshShaderFeaturesNV */ /* VK_NV_mesh_shader */
615
- // bool taskShader;
616
- // bool meshShader;
617
-
618
- // [TODO] Expose Soon, Useful
619
- /* RepresentativeFragmentTestFeaturesNV */ /* VK_NV_representative_fragment_test */
620
- // bool representativeFragmentTest;
621
-
622
- // [TODO] requires extra API work to use
623
- // GL Hint: in GL/GLES this is NV_scissor_exclusive
624
- /* ExclusiveScissorFeaturesNV */ /* VK_NV_scissor_exclusive */
625
- // bool exclusiveScissor;
626
-
627
710
// [ENABLE BY DEFAULT]
628
711
/* ShaderSMBuiltinsFeaturesNV */ /* VK_NV_shader_sm_builtins */
629
712
// bool shaderSMBuiltins;
@@ -662,31 +745,18 @@ struct SPhysicalDeviceFeatures
662
745
// [DO NOT EXPOSE] Promoted to KHR version already exposed
663
746
/* VK_AMD_draw_indirect_count */
664
747
665
- // [TODO] Always enable, expose as limit
666
- /* VK_AMD_gcn_shader */
667
-
668
748
// [DO NOT EXPOSE] 0 documentation
669
749
/* VK_AMD_gpa_interface */
670
750
671
- // [TODO] Always enable, expose as limit (Note: Promoted to VK_KHR_shader_float16_int8)
672
- /* VK_AMD_gpu_shader_half_float */
673
-
674
751
// [TODO LATER] (When it has documentation): Always enable, expose as limit
675
752
/* VK_AMD_gpu_shader_half_float_fetch */
676
-
677
- // [TODO] Always enable, expose as limit (Note: Promoted to VK_AMD_gpu_shader_int16)
678
- /* VK_AMD_gpu_shader_int16 */
679
753
680
754
// [DO NOT EXPOSE] 0 documentation
681
755
/* VK_AMD_image_layout_resolve */
682
756
683
757
// [DO NOT EXPOSE]
684
758
/* VK_AMD_memory_overallocation_behavior */
685
759
686
- // [TODO] Expose NV & AMD mixed attachment samples under single bool
687
- /* VK_AMD_mixed_attachment_samples */
688
- /* VK_NV_framebuffer_mixed_samples */
689
-
690
760
// [DO NOT EXPOSE] Promoted to VK_KHR_maintenance1, core VK 1.1
691
761
/* VK_AMD_negative_viewport_height */
692
762
@@ -695,27 +765,6 @@ struct SPhysicalDeviceFeatures
695
765
696
766
// [DO NOT EXPOSE] Promoted to VK_EXT_sample_locations
697
767
/* VK_AMD_programmable_sample_locations */
698
-
699
- // [TODO] Will add at some point
700
- /* VK_AMD_rasterization_order */
701
-
702
- // [TODO] Always enable, have it contribute to shaderSubgroup reporting
703
- /* VK_AMD_shader_ballot */
704
-
705
- // [TODO] Want to expose
706
- /* VK_AMD_shader_explicit_vertex_parameter */
707
-
708
- // [TODO] Always enable, expose as limit
709
- /* VK_AMD_shader_image_load_store_lod */
710
-
711
- // [TODO] Expose, leave note to user about needing to use `getNativeHandle` for reporting
712
- /* VK_AMD_shader_info */
713
-
714
- // [TODO] Enable when available, report as limit
715
- /* VK_AMD_shader_trinary_minmax */
716
-
717
- // [TODO] Won't expose for now, API changes necessary
718
- /* VK_AMD_texture_gather_bias_lod */
719
768
720
769
// [DO NOT EXPOSE] 0 documentation
721
770
/* VK_AMD_wave_limits */
@@ -732,7 +781,7 @@ struct SPhysicalDeviceFeatures
732
781
// [DO NOT EXPOSE] Promoted to VK_EXT_debug_utils (instance ext)
733
782
/* VK_EXT_debug_marker */
734
783
735
- // [TODO] Will expose some day
784
+ // [TODO LATER ] Will expose some day
736
785
/* VK_EXT_depth_range_unrestricted */
737
786
738
787
// [TODO LATER] Requires handling display swapchain stuff
@@ -750,15 +799,9 @@ struct SPhysicalDeviceFeatures
750
799
// [DO NOT EXPOSE] absorbed into KHR_global_priority
751
800
/* VK_EXT_global_priority_query */
752
801
753
- // [TODO] Expose
754
- /* VK_EXT_hdr_metadata */
755
-
756
802
// [DO NOT EXPOSE] Too "intrinsically linux"
757
803
/* VK_EXT_image_drm_format_modifier */
758
804
759
- // [TODO] needs to figure out how extending our LOAD_OP enum would affect the GL backend
760
- /* VK_EXT_load_store_op_none */
761
-
762
805
// [TODO LATER] Expose when we support MoltenVK
763
806
/* VK_EXT_metal_objects */
764
807
@@ -771,9 +814,6 @@ struct SPhysicalDeviceFeatures
771
814
// [TODO LATER] would like to expose, but too much API to change
772
815
/* VK_EXT_pipeline_creation_feedback */
773
816
774
- // [TODO] Always enable, expose as limit
775
- /* VK_EXT_post_depth_coverage */
776
-
777
817
/* VK_EXT_queue_family_foreign */
778
818
779
819
// [DO NOT EXPOSE] wont expose yet (or ever), requires VK_KHR_sampler_ycbcr_conversion
@@ -784,9 +824,6 @@ struct SPhysicalDeviceFeatures
784
824
// [DO NOT EXPOSE] stupid to expose, it would be extremely dumb to want to provide some identifiers instead of VkShaderModule outside of some emulator which has no control over pipeline combo explosion
785
825
/* VK_EXT_shader_module_identifier */
786
826
787
- // [TODO] Always enable, expose as limit
788
- /* VK_EXT_shader_stencil_export */
789
-
790
827
// [DO NOT EXPOSE] we dont need to care or know about it
791
828
/* VK_EXT_tooling_info */
792
829
@@ -805,12 +842,6 @@ struct SPhysicalDeviceFeatures
805
842
// [DO NOT EXPOSE] Provisional
806
843
/* VK_EXTX_portability_subset */
807
844
808
- // [TODO] Always enable, expose as limit
809
- /* VK_GOOGLE_decorate_string */
810
-
811
- // [TODO] Immediate TODO shortlist
812
- /* VK_GOOGLE_display_timing */
813
-
814
845
// [DO NOT EXPOSE]
815
846
/* VK_GOOGLE_hlsl_functionality1 */
816
847
@@ -844,9 +875,6 @@ struct SPhysicalDeviceFeatures
844
875
// [DO NOT EXPOSE] required for acceleration_structure and only that extension, do not expose until another comes that actually makes use of it
845
876
/* VK_KHR_deferred_host_operations */
846
877
847
- // [TODO] Promoted to VK1.1 core, haven't updated API to match
848
- /* VK_KHR_descriptor_update_template */
849
-
850
878
// [DO NOT EXPOSE] Promoted to core VK 1.1
851
879
/* VK_KHR_device_group */
852
880
@@ -855,30 +883,12 @@ struct SPhysicalDeviceFeatures
855
883
// [DO NOT EXPOSE] Promoted to core VK 1.1
856
884
/* VK_KHR_external_fence */
857
885
858
- // [TODO] Always enable, expose as limit
859
- /* VK_KHR_external_fence_fd */
860
-
861
- // [TODO] Always enable, expose as limit
862
- /* VK_KHR_external_fence_win32 */
863
-
864
886
// [DO NOT EXPOSE] Promoted to core VK 1.1
865
887
/* VK_KHR_external_memory */
866
888
867
- // [TODO] Always enable, expose as limit
868
- /* VK_KHR_external_memory_fd */
869
-
870
- // [TODO] Always enable, expose as limit
871
- /* VK_KHR_external_memory_win32 */
872
-
873
889
// [DO NOT EXPOSE] Promoted to core VK 1.1
874
890
/* VK_KHR_external_semaphore */
875
891
876
- // [TODO] Always enable, expose as limit
877
- /* VK_KHR_external_semaphore_fd */
878
-
879
- // [TODO] Always enable, expose as limit
880
- /* VK_KHR_external_semaphore_win32 */
881
-
882
892
/* VK_KHR_format_feature_flags2 */
883
893
884
894
// [DO NOT EXPOSE] Promoted to core VK 1.1
@@ -896,9 +906,6 @@ struct SPhysicalDeviceFeatures
896
906
// [DO NOT EXPOSE] Promoted to core VK 1.1
897
907
/* VK_KHR_relaxed_block_layout */
898
908
899
- // [TODO] Shader extension, always enable, expose as limit
900
- /* VK_KHR_shader_non_semantic_info */
901
-
902
909
// [DO NOT EXPOSE] Leave for later consideration
903
910
/* VK_KHR_shared_presentable_image */
904
911
@@ -947,9 +954,6 @@ struct SPhysicalDeviceFeatures
947
954
// [TODO LATER] Requires API changes
948
955
/* VK_NV_fragment_coverage_to_color */
949
956
950
- // [TODO] Always enable, expose as limit
951
- /* VK_NV_geometry_shader_passthrough */
952
-
953
957
// [DO NOT EXPOSE]
954
958
/* VK_NV_glsl_shader */
955
959
@@ -961,12 +965,6 @@ struct SPhysicalDeviceFeatures
961
965
// [DO NOT EXPOSE] 0 documentation
962
966
/* VK_NV_rdma_memory */
963
967
964
- // [TODO] Always enable, expose as limit
965
- /* VK_NV_sample_mask_override_coverage */
966
-
967
- // [TODO] Always enable, have it contribute to shaderSubgroup reporting & report as limit
968
- /* VK_NV_shader_subgroup_partitioned */
969
-
970
968
// [DO NOT EXPOSE] 0 documentation
971
969
/* VK_NV_texture_dirty_tile_map */
972
970
@@ -975,9 +973,6 @@ struct SPhysicalDeviceFeatures
975
973
976
974
/* VK_NV_viewport_array2 */
977
975
978
- // [TODO] Always enable, expose as limit
979
- /* VK_NV_viewport_swizzle */
980
-
981
976
// [DO NOT EXPOSE] Promoted to VK_KHR_win32_keyed_mutex
982
977
/* VK_NV_win32_keyed_mutex */
983
978
0 commit comments