665
646
.shaderResourceMinLod = true,
666
647
.shaderResourceResidency = true,
667
648
.inheritedQueries = true,
672
radv_get_physical_device_features_1_1(struct radv_physical_device *pdevice,
673
VkPhysicalDeviceVulkan11Features *f)
675
assert(f->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES);
677
f->storageBuffer16BitAccess = true;
678
f->uniformAndStorageBuffer16BitAccess = true;
679
f->storagePushConstant16 = true;
680
f->storageInputOutput16 = pdevice->rad_info.has_packed_math_16bit;
682
f->multiviewGeometryShader = true;
683
f->multiviewTessellationShader = true;
684
f->variablePointersStorageBuffer = true;
685
f->variablePointers = true;
686
f->protectedMemory = false;
687
f->samplerYcbcrConversion = true;
688
f->shaderDrawParameters = true;
692
radv_get_physical_device_features_1_2(struct radv_physical_device *pdevice,
693
VkPhysicalDeviceVulkan12Features *f)
695
assert(f->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES);
697
f->samplerMirrorClampToEdge = true;
698
f->drawIndirectCount = true;
699
f->storageBuffer8BitAccess = true;
700
f->uniformAndStorageBuffer8BitAccess = true;
701
f->storagePushConstant8 = true;
702
f->shaderBufferInt64Atomics = true;
703
f->shaderSharedInt64Atomics = true;
704
f->shaderFloat16 = pdevice->rad_info.has_packed_math_16bit;
705
f->shaderInt8 = true;
707
f->descriptorIndexing = true;
708
f->shaderInputAttachmentArrayDynamicIndexing = true;
709
f->shaderUniformTexelBufferArrayDynamicIndexing = true;
710
f->shaderStorageTexelBufferArrayDynamicIndexing = true;
711
f->shaderUniformBufferArrayNonUniformIndexing = true;
712
f->shaderSampledImageArrayNonUniformIndexing = true;
713
f->shaderStorageBufferArrayNonUniformIndexing = true;
714
f->shaderStorageImageArrayNonUniformIndexing = true;
715
f->shaderInputAttachmentArrayNonUniformIndexing = true;
716
f->shaderUniformTexelBufferArrayNonUniformIndexing = true;
717
f->shaderStorageTexelBufferArrayNonUniformIndexing = true;
718
f->descriptorBindingUniformBufferUpdateAfterBind = true;
719
f->descriptorBindingSampledImageUpdateAfterBind = true;
720
f->descriptorBindingStorageImageUpdateAfterBind = true;
721
f->descriptorBindingStorageBufferUpdateAfterBind = true;
722
f->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
723
f->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
724
f->descriptorBindingUpdateUnusedWhilePending = true;
725
f->descriptorBindingPartiallyBound = true;
726
f->descriptorBindingVariableDescriptorCount = true;
727
f->runtimeDescriptorArray = true;
729
f->samplerFilterMinmax = true;
730
f->scalarBlockLayout = pdevice->rad_info.gfx_level >= GFX7;
731
f->imagelessFramebuffer = true;
732
f->uniformBufferStandardLayout = true;
733
f->shaderSubgroupExtendedTypes = true;
734
f->separateDepthStencilLayouts = true;
735
f->hostQueryReset = true;
736
f->timelineSemaphore = true, f->bufferDeviceAddress = true;
737
f->bufferDeviceAddressCaptureReplay = true;
738
f->bufferDeviceAddressMultiDevice = false;
739
f->vulkanMemoryModel = true;
740
f->vulkanMemoryModelDeviceScope = true;
741
f->vulkanMemoryModelAvailabilityVisibilityChains = false;
742
f->shaderOutputViewportIndex = true;
743
f->shaderOutputLayer = true;
744
f->subgroupBroadcastDynamicId = true;
748
radv_get_physical_device_features_1_3(struct radv_physical_device *pdevice,
749
VkPhysicalDeviceVulkan13Features *f)
751
assert(f->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES);
753
f->robustImageAccess = true;
754
f->inlineUniformBlock = true;
755
f->descriptorBindingInlineUniformBlockUpdateAfterBind = true;
756
f->pipelineCreationCacheControl = true;
757
f->privateData = true;
758
f->shaderDemoteToHelperInvocation = true;
759
f->shaderTerminateInvocation = true;
760
f->subgroupSizeControl = true;
761
f->computeFullSubgroups = true;
762
f->synchronization2 = true;
763
f->textureCompressionASTC_HDR = false;
764
f->shaderZeroInitializeWorkgroupMemory = true;
765
f->dynamicRendering = true;
766
f->shaderIntegerDotProduct = true;
767
f->maintenance4 = true;
770
VKAPI_ATTR void VKAPI_CALL
771
radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
772
VkPhysicalDeviceFeatures2 *pFeatures)
774
RADV_FROM_HANDLE(radv_physical_device, pdevice, physicalDevice);
775
radv_GetPhysicalDeviceFeatures(physicalDevice, &pFeatures->features);
777
VkPhysicalDeviceVulkan11Features core_1_1 = {
778
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
780
radv_get_physical_device_features_1_1(pdevice, &core_1_1);
782
VkPhysicalDeviceVulkan12Features core_1_2 = {
783
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
785
radv_get_physical_device_features_1_2(pdevice, &core_1_2);
787
VkPhysicalDeviceVulkan13Features core_1_3 = {
788
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
790
radv_get_physical_device_features_1_3(pdevice, &core_1_3);
792
#define CORE_FEATURE(major, minor, feature) features->feature = core_##major##_##minor.feature
794
vk_foreach_struct(ext, pFeatures->pNext)
796
if (vk_get_physical_device_core_1_1_feature_ext(ext, &core_1_1))
798
if (vk_get_physical_device_core_1_2_feature_ext(ext, &core_1_2))
800
if (vk_get_physical_device_core_1_3_feature_ext(ext, &core_1_3))
803
switch (ext->sType) {
804
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
805
VkPhysicalDeviceConditionalRenderingFeaturesEXT *features =
806
(VkPhysicalDeviceConditionalRenderingFeaturesEXT *)ext;
807
features->conditionalRendering = true;
808
features->inheritedConditionalRendering = false;
811
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
812
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *features =
813
(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *)ext;
814
features->vertexAttributeInstanceRateDivisor = true;
815
features->vertexAttributeInstanceRateZeroDivisor = true;
818
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
819
VkPhysicalDeviceTransformFeedbackFeaturesEXT *features =
820
(VkPhysicalDeviceTransformFeedbackFeaturesEXT *)ext;
821
features->transformFeedback = true;
822
features->geometryStreams = true;
825
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: {
826
VkPhysicalDeviceScalarBlockLayoutFeatures *features =
827
(VkPhysicalDeviceScalarBlockLayoutFeatures *)ext;
828
CORE_FEATURE(1, 2, scalarBlockLayout);
831
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: {
832
VkPhysicalDeviceMemoryPriorityFeaturesEXT *features =
833
(VkPhysicalDeviceMemoryPriorityFeaturesEXT *)ext;
834
features->memoryPriority = true;
837
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: {
838
VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *features =
839
(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *)ext;
840
CORE_FEATURE(1, 2, bufferDeviceAddress);
841
CORE_FEATURE(1, 2, bufferDeviceAddressCaptureReplay);
842
CORE_FEATURE(1, 2, bufferDeviceAddressMultiDevice);
845
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
846
VkPhysicalDeviceDepthClipEnableFeaturesEXT *features =
847
(VkPhysicalDeviceDepthClipEnableFeaturesEXT *)ext;
848
features->depthClipEnable = true;
851
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: {
852
VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *features =
853
(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *)ext;
854
features->computeDerivativeGroupQuads = false;
855
features->computeDerivativeGroupLinear = true;
858
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: {
859
VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *features =
860
(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *)ext;
861
features->ycbcrImageArrays = true;
864
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: {
865
VkPhysicalDeviceIndexTypeUint8FeaturesEXT *features =
866
(VkPhysicalDeviceIndexTypeUint8FeaturesEXT *)ext;
867
features->indexTypeUint8 = pdevice->rad_info.gfx_level >= GFX8;
870
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
871
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *features =
872
(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *)ext;
873
features->pipelineExecutableInfo = true;
876
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: {
877
VkPhysicalDeviceShaderClockFeaturesKHR *features =
878
(VkPhysicalDeviceShaderClockFeaturesKHR *)ext;
879
features->shaderSubgroupClock = true;
880
features->shaderDeviceClock = pdevice->rad_info.gfx_level >= GFX8;
883
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
884
VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *features =
885
(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *)ext;
886
features->texelBufferAlignment = true;
889
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: {
890
VkPhysicalDeviceCoherentMemoryFeaturesAMD *features =
891
(VkPhysicalDeviceCoherentMemoryFeaturesAMD *)ext;
892
features->deviceCoherentMemory = pdevice->rad_info.has_l2_uncached;
895
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: {
896
VkPhysicalDeviceLineRasterizationFeaturesEXT *features =
897
(VkPhysicalDeviceLineRasterizationFeaturesEXT *)ext;
898
features->rectangularLines = true;
899
features->bresenhamLines = true;
900
features->smoothLines = false;
901
features->stippledRectangularLines = false;
902
/* FIXME: Some stippled Bresenham CTS fails on Vega10
905
features->stippledBresenhamLines = pdevice->rad_info.gfx_level != GFX9;
906
features->stippledSmoothLines = false;
909
case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: {
910
VkDeviceMemoryOverallocationCreateInfoAMD *features =
911
(VkDeviceMemoryOverallocationCreateInfoAMD *)ext;
912
features->overallocationBehavior = true;
915
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
916
VkPhysicalDeviceRobustness2FeaturesEXT *features =
917
(VkPhysicalDeviceRobustness2FeaturesEXT *)ext;
918
features->robustBufferAccess2 = true;
919
features->robustImageAccess2 = true;
920
features->nullDescriptor = true;
923
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
924
VkPhysicalDeviceCustomBorderColorFeaturesEXT *features =
925
(VkPhysicalDeviceCustomBorderColorFeaturesEXT *)ext;
926
features->customBorderColors = true;
927
features->customBorderColorWithoutFormat = true;
930
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
931
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *features =
932
(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)ext;
933
features->extendedDynamicState = true;
936
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: {
937
VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *features =
938
(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *)ext;
939
features->shaderBufferFloat32Atomics = true;
940
features->shaderBufferFloat32AtomicAdd = pdevice->rad_info.gfx_level >= GFX11;
941
features->shaderBufferFloat64Atomics = true;
942
features->shaderBufferFloat64AtomicAdd = false;
943
features->shaderSharedFloat32Atomics = true;
944
features->shaderSharedFloat32AtomicAdd = pdevice->rad_info.gfx_level >= GFX8;
945
features->shaderSharedFloat64Atomics = true;
946
features->shaderSharedFloat64AtomicAdd = false;
947
features->shaderImageFloat32Atomics = true;
948
features->shaderImageFloat32AtomicAdd = false;
949
features->sparseImageFloat32Atomics = true;
950
features->sparseImageFloat32AtomicAdd = false;
953
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
954
VkPhysicalDevice4444FormatsFeaturesEXT *features =
955
(VkPhysicalDevice4444FormatsFeaturesEXT *)ext;
956
features->formatA4R4G4B4 = true;
957
features->formatA4B4G4R4 = true;
960
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: {
961
VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *features =
962
(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *)ext;
963
features->shaderImageInt64Atomics = true;
964
features->sparseImageInt64Atomics = true;
967
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: {
968
VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *features =
969
(VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)ext;
970
features->mutableDescriptorType = true;
973
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: {
974
VkPhysicalDeviceFragmentShadingRateFeaturesKHR *features =
975
(VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)ext;
976
features->pipelineFragmentShadingRate = true;
977
features->primitiveFragmentShadingRate = true;
978
features->attachmentFragmentShadingRate = radv_vrs_attachment_enabled(pdevice);
981
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: {
982
VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *features =
983
(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *)ext;
984
features->workgroupMemoryExplicitLayout = true;
985
features->workgroupMemoryExplicitLayoutScalarBlockLayout = true;
986
features->workgroupMemoryExplicitLayout8BitAccess = true;
987
features->workgroupMemoryExplicitLayout16BitAccess = true;
990
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
991
VkPhysicalDeviceProvokingVertexFeaturesEXT *features =
992
(VkPhysicalDeviceProvokingVertexFeaturesEXT *)ext;
993
features->provokingVertexLast = true;
994
features->transformFeedbackPreservesProvokingVertex = true;
997
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
998
VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *features =
999
(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *)ext;
1000
features->extendedDynamicState2 = true;
1001
features->extendedDynamicState2LogicOp = true;
1002
features->extendedDynamicState2PatchControlPoints = true;
1005
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR: {
1006
VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *features =
1007
(VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *)ext;
1008
features->globalPriorityQuery = true;
1011
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: {
1012
VkPhysicalDeviceAccelerationStructureFeaturesKHR *features =
1013
(VkPhysicalDeviceAccelerationStructureFeaturesKHR *)ext;
1014
features->accelerationStructure = true;
1015
features->accelerationStructureCaptureReplay = true;
1016
features->accelerationStructureIndirectBuild = false;
1017
features->accelerationStructureHostCommands = false;
1018
features->descriptorBindingAccelerationStructureUpdateAfterBind = true;
1021
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: {
1022
VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *features =
1023
(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *)ext;
1024
features->shaderSubgroupUniformControlFlow = true;
1027
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: {
1028
VkPhysicalDeviceMultiDrawFeaturesEXT *features =
1029
(VkPhysicalDeviceMultiDrawFeaturesEXT *)ext;
1030
features->multiDraw = true;
1033
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
1034
VkPhysicalDeviceColorWriteEnableFeaturesEXT *features =
1035
(VkPhysicalDeviceColorWriteEnableFeaturesEXT *)ext;
1036
features->colorWriteEnable = true;
1039
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: {
1040
VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *features =
1041
(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *)ext;
1042
bool has_shader_image_float_minmax = pdevice->rad_info.gfx_level != GFX8 &&
1043
pdevice->rad_info.gfx_level != GFX9 &&
1044
pdevice->rad_info.gfx_level != GFX11;
1045
features->shaderBufferFloat16Atomics = false;
1046
features->shaderBufferFloat16AtomicAdd = false;
1047
features->shaderBufferFloat16AtomicMinMax = false;
1048
features->shaderBufferFloat32AtomicMinMax =
1049
radv_has_shader_buffer_float_minmax(pdevice, 32);
1050
features->shaderBufferFloat64AtomicMinMax =
1051
radv_has_shader_buffer_float_minmax(pdevice, 64);
1052
features->shaderSharedFloat16Atomics = false;
1053
features->shaderSharedFloat16AtomicAdd = false;
1054
features->shaderSharedFloat16AtomicMinMax = false;
1055
features->shaderSharedFloat32AtomicMinMax = true;
1056
features->shaderSharedFloat64AtomicMinMax = true;
1057
features->shaderImageFloat32AtomicMinMax = has_shader_image_float_minmax;
1058
features->sparseImageFloat32AtomicMinMax = has_shader_image_float_minmax;
1061
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: {
1062
VkPhysicalDevicePresentIdFeaturesKHR *features =
1063
(VkPhysicalDevicePresentIdFeaturesKHR *)ext;
1064
features->presentId = pdevice->vk.supported_extensions.KHR_present_id;
1067
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: {
1068
VkPhysicalDevicePresentWaitFeaturesKHR *features =
1069
(VkPhysicalDevicePresentWaitFeaturesKHR *)ext;
1070
features->presentWait = pdevice->vk.supported_extensions.KHR_present_wait;
1073
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
1074
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *features =
1075
(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *)ext;
1076
features->primitiveTopologyListRestart = true;
1077
features->primitiveTopologyPatchListRestart = false;
1080
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: {
1081
VkPhysicalDeviceRayQueryFeaturesKHR *features = (VkPhysicalDeviceRayQueryFeaturesKHR *)ext;
1082
features->rayQuery = true;
1085
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT: {
1086
VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *features =
1087
(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *)ext;
1088
features->pipelineLibraryGroupHandles = true;
1091
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: {
1092
VkPhysicalDeviceRayTracingPipelineFeaturesKHR *features =
1093
(VkPhysicalDeviceRayTracingPipelineFeaturesKHR *)ext;
1094
features->rayTracingPipeline = true;
1095
features->rayTracingPipelineShaderGroupHandleCaptureReplay = true;
1096
features->rayTracingPipelineShaderGroupHandleCaptureReplayMixed = false;
1097
features->rayTracingPipelineTraceRaysIndirect = true;
1098
features->rayTraversalPrimitiveCulling = true;
1101
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: {
1102
VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *features =
1103
(VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *)ext;
1104
features->rayTracingMaintenance1 = true;
1105
features->rayTracingPipelineTraceRaysIndirect2 = radv_enable_rt(pdevice, true);
1108
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: {
1109
VkPhysicalDeviceMaintenance4Features *features =
1110
(VkPhysicalDeviceMaintenance4Features *)ext;
1111
features->maintenance4 = true;
1114
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: {
1115
VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *features =
1116
(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *)ext;
1117
features->vertexInputDynamicState = true;
1120
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: {
1121
VkPhysicalDeviceImageViewMinLodFeaturesEXT *features =
1122
(VkPhysicalDeviceImageViewMinLodFeaturesEXT *)ext;
1123
features->minLod = true;
1126
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: {
1127
VkPhysicalDeviceSynchronization2Features *features =
1128
(VkPhysicalDeviceSynchronization2Features *)ext;
1129
features->synchronization2 = true;
1132
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: {
1133
VkPhysicalDeviceDynamicRenderingFeatures *features =
1134
(VkPhysicalDeviceDynamicRenderingFeatures *)ext;
1135
features->dynamicRendering = true;
1138
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: {
1139
VkPhysicalDeviceMeshShaderFeaturesEXT *features =
1140
(VkPhysicalDeviceMeshShaderFeaturesEXT *)ext;
1141
bool taskmesh_en = radv_taskmesh_enabled(pdevice);
1142
features->meshShader = taskmesh_en;
1143
features->taskShader = taskmesh_en;
1144
features->multiviewMeshShader = taskmesh_en;
1145
features->primitiveFragmentShadingRateMeshShader = taskmesh_en;
1146
features->meshShaderQueries = false;
1149
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: {
1150
VkPhysicalDeviceTextureCompressionASTCHDRFeatures *features =
1151
(VkPhysicalDeviceTextureCompressionASTCHDRFeatures *)ext;
1152
features->textureCompressionASTC_HDR = false;
1155
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: {
1156
VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *features =
1157
(VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *)ext;
1158
features->descriptorSetHostMapping = true;
1161
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: {
1162
VkPhysicalDeviceDepthClipControlFeaturesEXT *features =
1163
(VkPhysicalDeviceDepthClipControlFeaturesEXT *)ext;
1164
features->depthClipControl = true;
1167
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: {
1168
VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *features =
1169
(VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *)ext;
1170
features->image2DViewOf3D = true;
1171
features->sampler2DViewOf3D = false;
1174
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: {
1175
VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *features =
1176
(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *)ext;
1177
features->shaderIntegerFunctions2 = true;
1180
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: {
1181
VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *features =
1182
(VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)ext;
1183
features->primitivesGeneratedQuery = true;
1184
features->primitivesGeneratedQueryWithRasterizerDiscard = true;
1185
features->primitivesGeneratedQueryWithNonZeroStreams = true;
1188
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: {
1189
VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *features =
1190
(VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *)ext;
1191
features->nonSeamlessCubeMap = true;
1194
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: {
1195
VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *features =
1196
(VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *)ext;
1197
features->borderColorSwizzle = true;
1198
features->borderColorSwizzleFromImage = true;
1201
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: {
1202
VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *features =
1203
(VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *)ext;
1204
features->shaderModuleIdentifier = true;
1207
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: {
1208
VkPhysicalDevicePerformanceQueryFeaturesKHR *features =
1209
(VkPhysicalDevicePerformanceQueryFeaturesKHR *)ext;
1210
features->performanceCounterQueryPools = radv_perf_query_supported(pdevice);
1211
features->performanceCounterMultipleQueryPools = features->performanceCounterQueryPools;
1214
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: {
1215
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *features =
1216
(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *)ext;
1217
features->deviceGeneratedCommands = true;
1220
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: {
1221
VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *features =
1222
(VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *)ext;
1223
features->attachmentFeedbackLoopLayout = true;
1226
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
1227
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *features =
1228
(VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *)ext;
1229
features->graphicsPipelineLibrary = true;
1232
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: {
1233
VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *features =
1234
(VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *)ext;
1235
features->extendedDynamicState3TessellationDomainOrigin = true;
1236
features->extendedDynamicState3PolygonMode = true;
1237
features->extendedDynamicState3SampleMask = true;
1238
features->extendedDynamicState3AlphaToCoverageEnable = pdevice->rad_info.gfx_level < GFX11;
1239
features->extendedDynamicState3LogicOpEnable = true;
1240
features->extendedDynamicState3LineStippleEnable = true;
1241
features->extendedDynamicState3ColorBlendEnable = true;
1242
features->extendedDynamicState3DepthClipEnable = true;
1243
features->extendedDynamicState3ConservativeRasterizationMode = pdevice->rad_info.gfx_level >= GFX9;
1244
features->extendedDynamicState3DepthClipNegativeOneToOne = true;
1245
features->extendedDynamicState3ProvokingVertexMode = true;
1246
features->extendedDynamicState3DepthClampEnable = true;
1247
features->extendedDynamicState3ColorWriteMask = true;
1248
features->extendedDynamicState3RasterizationSamples = true;
1249
features->extendedDynamicState3ColorBlendEquation = true;
1250
features->extendedDynamicState3SampleLocationsEnable = false; /* TODO */
1251
features->extendedDynamicState3LineRasterizationMode = true;
1252
features->extendedDynamicState3ExtraPrimitiveOverestimationSize = false;
1253
features->extendedDynamicState3AlphaToOneEnable = false;
1254
features->extendedDynamicState3RasterizationStream = false;
1255
features->extendedDynamicState3ColorBlendAdvanced = false;
1256
features->extendedDynamicState3ViewportWScalingEnable = false;
1257
features->extendedDynamicState3ViewportSwizzle = false;
1258
features->extendedDynamicState3CoverageToColorEnable = false;
1259
features->extendedDynamicState3CoverageToColorLocation = false;
1260
features->extendedDynamicState3CoverageModulationMode = false;
1261
features->extendedDynamicState3CoverageModulationTableEnable = false;
1262
features->extendedDynamicState3CoverageModulationTable = false;
1263
features->extendedDynamicState3CoverageReductionMode = false;
1264
features->extendedDynamicState3RepresentativeFragmentTestEnable = false;
1265
features->extendedDynamicState3ShadingRateImageEnable = false;
1268
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: {
1269
VkPhysicalDeviceDescriptorBufferFeaturesEXT *features =
1270
(VkPhysicalDeviceDescriptorBufferFeaturesEXT *)ext;
1271
features->descriptorBuffer = true;
1272
features->descriptorBufferCaptureReplay = false;
1273
features->descriptorBufferImageLayoutIgnored = true;
1274
features->descriptorBufferPushDescriptors = true;
1277
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD: {
1278
VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *features =
1279
(VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *)ext;
1280
features->shaderEarlyAndLateFragmentTests = true;
1283
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT: {
1284
VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *features =
1285
(VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *)ext;
1286
features->imageSlicedViewOf3D = true;
651
.storageBuffer16BitAccess = true,
652
.uniformAndStorageBuffer16BitAccess = true,
653
.storagePushConstant16 = true,
654
.storageInputOutput16 = pdevice->rad_info.has_packed_math_16bit,
656
.multiviewGeometryShader = true,
657
.multiviewTessellationShader = true,
658
.variablePointersStorageBuffer = true,
659
.variablePointers = true,
660
.protectedMemory = false,
661
.samplerYcbcrConversion = true,
662
.shaderDrawParameters = true,
665
.samplerMirrorClampToEdge = true,
666
.drawIndirectCount = true,
667
.storageBuffer8BitAccess = true,
668
.uniformAndStorageBuffer8BitAccess = true,
669
.storagePushConstant8 = true,
670
.shaderBufferInt64Atomics = true,
671
.shaderSharedInt64Atomics = true,
672
.shaderFloat16 = pdevice->rad_info.has_packed_math_16bit,
675
.descriptorIndexing = true,
676
.shaderInputAttachmentArrayDynamicIndexing = true,
677
.shaderUniformTexelBufferArrayDynamicIndexing = true,
678
.shaderStorageTexelBufferArrayDynamicIndexing = true,
679
.shaderUniformBufferArrayNonUniformIndexing = true,
680
.shaderSampledImageArrayNonUniformIndexing = true,
681
.shaderStorageBufferArrayNonUniformIndexing = true,
682
.shaderStorageImageArrayNonUniformIndexing = true,
683
.shaderInputAttachmentArrayNonUniformIndexing = true,
684
.shaderUniformTexelBufferArrayNonUniformIndexing = true,
685
.shaderStorageTexelBufferArrayNonUniformIndexing = true,
686
.descriptorBindingUniformBufferUpdateAfterBind = true,
687
.descriptorBindingSampledImageUpdateAfterBind = true,
688
.descriptorBindingStorageImageUpdateAfterBind = true,
689
.descriptorBindingStorageBufferUpdateAfterBind = true,
690
.descriptorBindingUniformTexelBufferUpdateAfterBind = true,
691
.descriptorBindingStorageTexelBufferUpdateAfterBind = true,
692
.descriptorBindingUpdateUnusedWhilePending = true,
693
.descriptorBindingPartiallyBound = true,
694
.descriptorBindingVariableDescriptorCount = true,
695
.runtimeDescriptorArray = true,
697
.samplerFilterMinmax = true,
698
.scalarBlockLayout = pdevice->rad_info.gfx_level >= GFX7,
699
.imagelessFramebuffer = true,
700
.uniformBufferStandardLayout = true,
701
.shaderSubgroupExtendedTypes = true,
702
.separateDepthStencilLayouts = true,
703
.hostQueryReset = true,
704
.timelineSemaphore = true,
705
.bufferDeviceAddress = true,
706
.bufferDeviceAddressCaptureReplay = true,
707
.bufferDeviceAddressMultiDevice = false,
708
.vulkanMemoryModel = true,
709
.vulkanMemoryModelDeviceScope = true,
710
.vulkanMemoryModelAvailabilityVisibilityChains = false,
711
.shaderOutputViewportIndex = true,
712
.shaderOutputLayer = true,
713
.subgroupBroadcastDynamicId = true,
716
.robustImageAccess = true,
717
.inlineUniformBlock = true,
718
.descriptorBindingInlineUniformBlockUpdateAfterBind = true,
719
.pipelineCreationCacheControl = true,
721
.shaderDemoteToHelperInvocation = true,
722
.shaderTerminateInvocation = true,
723
.subgroupSizeControl = true,
724
.computeFullSubgroups = true,
725
.synchronization2 = true,
726
.textureCompressionASTC_HDR = false,
727
.shaderZeroInitializeWorkgroupMemory = true,
728
.dynamicRendering = true,
729
.shaderIntegerDotProduct = true,
730
.maintenance4 = true,
732
/* VK_EXT_conditional_rendering */
733
.conditionalRendering = true,
734
.inheritedConditionalRendering = false,
736
/* VK_EXT_vertex_attribute_divisor */
737
.vertexAttributeInstanceRateDivisor = true,
738
.vertexAttributeInstanceRateZeroDivisor = true,
740
/* VK_EXT_transform_feedback */
741
.transformFeedback = true,
742
.geometryStreams = true,
744
/* VK_EXT_memory_priority */
745
.memoryPriority = true,
747
/* VK_EXT_depth_clip_enable */
748
.depthClipEnable = true,
750
/* VK_NV_compute_shader_derivatives */
751
.computeDerivativeGroupQuads = false,
752
.computeDerivativeGroupLinear = true,
754
/* VK_EXT_ycbcr_image_arrays */
755
.ycbcrImageArrays = true,
757
/* VK_EXT_index_type_uint8 */
758
.indexTypeUint8 = pdevice->rad_info.gfx_level >= GFX8,
760
/* VK_KHR_pipeline_executable_properties */
761
.pipelineExecutableInfo = true,
763
/* VK_KHR_shader_clock */
764
.shaderSubgroupClock = true,
765
.shaderDeviceClock = pdevice->rad_info.gfx_level >= GFX8,
767
/* VK_EXT_texel_buffer_alignment */
768
.texelBufferAlignment = true,
770
/* VK_AMD_device_coherent_memory */
771
.deviceCoherentMemory = pdevice->rad_info.has_l2_uncached,
773
/* VK_EXT_line_rasterization */
774
.rectangularLines = true,
775
.bresenhamLines = true,
777
.stippledRectangularLines = false,
778
/* FIXME: Some stippled Bresenham CTS fails on Vega10
781
.stippledBresenhamLines = pdevice->rad_info.gfx_level != GFX9,
782
.stippledSmoothLines = false,
784
/* VK_EXT_robustness2 */
785
.robustBufferAccess2 = true,
786
.robustImageAccess2 = true,
787
.nullDescriptor = true,
789
/* VK_EXT_custom_border_color */
790
.customBorderColors = true,
791
.customBorderColorWithoutFormat = true,
793
/* VK_EXT_extended_dynamic_state */
794
.extendedDynamicState = true,
796
/* VK_EXT_shader_atomic_float */
797
.shaderBufferFloat32Atomics = true,
798
.shaderBufferFloat32AtomicAdd = pdevice->rad_info.gfx_level >= GFX11,
799
.shaderBufferFloat64Atomics = true,
800
.shaderBufferFloat64AtomicAdd = false,
801
.shaderSharedFloat32Atomics = true,
802
.shaderSharedFloat32AtomicAdd = pdevice->rad_info.gfx_level >= GFX8,
803
.shaderSharedFloat64Atomics = true,
804
.shaderSharedFloat64AtomicAdd = false,
805
.shaderImageFloat32Atomics = true,
806
.shaderImageFloat32AtomicAdd = false,
807
.sparseImageFloat32Atomics = true,
808
.sparseImageFloat32AtomicAdd = false,
810
/* VK_EXT_4444_formats */
811
.formatA4R4G4B4 = true,
812
.formatA4B4G4R4 = true,
814
/* VK_EXT_shader_image_atomic_int64 */
815
.shaderImageInt64Atomics = true,
816
.sparseImageInt64Atomics = true,
818
/* VK_EXT_mutable_descriptor_type */
819
.mutableDescriptorType = true,
821
/* VK_KHR_fragment_shading_rate */
822
.pipelineFragmentShadingRate = true,
823
.primitiveFragmentShadingRate = true,
824
.attachmentFragmentShadingRate = radv_vrs_attachment_enabled(pdevice),
826
/* VK_KHR_workgroup_memory_explicit_layout */
827
.workgroupMemoryExplicitLayout = true,
828
.workgroupMemoryExplicitLayoutScalarBlockLayout = true,
829
.workgroupMemoryExplicitLayout8BitAccess = true,
830
.workgroupMemoryExplicitLayout16BitAccess = true,
832
/* VK_EXT_provoking_vertex */
833
.provokingVertexLast = true,
834
.transformFeedbackPreservesProvokingVertex = true,
836
/* VK_EXT_extended_dynamic_state2 */
837
.extendedDynamicState2 = true,
838
.extendedDynamicState2LogicOp = true,
839
.extendedDynamicState2PatchControlPoints = true,
841
/* VK_EXT_global_priority_query */
842
.globalPriorityQuery = true,
844
/* VK_KHR_acceleration_structure */
845
.accelerationStructure = true,
846
.accelerationStructureCaptureReplay = true,
847
.accelerationStructureIndirectBuild = false,
848
.accelerationStructureHostCommands = false,
849
.descriptorBindingAccelerationStructureUpdateAfterBind = true,
851
/* VK_EXT_buffer_device_address */
852
.bufferDeviceAddressCaptureReplayEXT = true,
854
/* VK_KHR_shader_subgroup_uniform_control_flow */
855
.shaderSubgroupUniformControlFlow = true,
857
/* VK_EXT_multi_draw */
860
/* VK_EXT_color_write_enable */
861
.colorWriteEnable = true,
863
/* VK_EXT_shader_atomic_float2 */
864
.shaderBufferFloat16Atomics = false,
865
.shaderBufferFloat16AtomicAdd = false,
866
.shaderBufferFloat16AtomicMinMax = false,
867
.shaderBufferFloat32AtomicMinMax = radv_has_shader_buffer_float_minmax(pdevice, 32),
868
.shaderBufferFloat64AtomicMinMax = radv_has_shader_buffer_float_minmax(pdevice, 64),
869
.shaderSharedFloat16Atomics = false,
870
.shaderSharedFloat16AtomicAdd = false,
871
.shaderSharedFloat16AtomicMinMax = false,
872
.shaderSharedFloat32AtomicMinMax = true,
873
.shaderSharedFloat64AtomicMinMax = true,
874
.shaderImageFloat32AtomicMinMax = has_shader_image_float_minmax,
875
.sparseImageFloat32AtomicMinMax = has_shader_image_float_minmax,
877
/* VK_KHR_present_id */
878
.presentId = pdevice->vk.supported_extensions.KHR_present_id,
880
/* VK_KHR_present_wait */
881
.presentWait = pdevice->vk.supported_extensions.KHR_present_wait,
883
/* VK_EXT_primitive_topology_list_restart */
884
.primitiveTopologyListRestart = true,
885
.primitiveTopologyPatchListRestart = false,
887
/* VK_KHR_ray_query */
890
/* VK_EXT_pipeline_library_group_handles */
891
.pipelineLibraryGroupHandles = true,
893
/* VK_KHR_ray_tracing_pipeline */
894
.rayTracingPipeline = true,
895
.rayTracingPipelineShaderGroupHandleCaptureReplay = true,
896
.rayTracingPipelineShaderGroupHandleCaptureReplayMixed = false,
897
.rayTracingPipelineTraceRaysIndirect = true,
898
.rayTraversalPrimitiveCulling = true,
900
/* VK_KHR_ray_tracing_maintenance1 */
901
.rayTracingMaintenance1 = true,
902
.rayTracingPipelineTraceRaysIndirect2 = radv_enable_rt(pdevice, true),
904
/* VK_EXT_vertex_input_dynamic_state */
905
.vertexInputDynamicState = true,
907
/* VK_EXT_image_view_min_lod */
910
/* VK_EXT_mesh_shader */
911
.meshShader = taskmesh_en,
912
.taskShader = taskmesh_en,
913
.multiviewMeshShader = taskmesh_en,
914
.primitiveFragmentShadingRateMeshShader = taskmesh_en,
915
.meshShaderQueries = false,
917
/* VK_VALVE_descriptor_set_host_mapping */
918
.descriptorSetHostMapping = true,
920
/* VK_EXT_depth_clip_control */
921
.depthClipControl = true,
923
/* VK_EXT_image_2d_view_of_3d */
924
.image2DViewOf3D = true,
925
.sampler2DViewOf3D = false,
927
/* VK_INTEL_shader_integer_functions2 */
928
.shaderIntegerFunctions2 = true,
930
/* VK_EXT_primitives_generated_query */
931
.primitivesGeneratedQuery = true,
932
.primitivesGeneratedQueryWithRasterizerDiscard = true,
933
.primitivesGeneratedQueryWithNonZeroStreams = true,
935
/* VK_EXT_non_seamless_cube_map */
936
.nonSeamlessCubeMap = true,
938
/* VK_EXT_border_color_swizzle */
939
.borderColorSwizzle = true,
940
.borderColorSwizzleFromImage = true,
942
/* VK_EXT_shader_module_identifier */
943
.shaderModuleIdentifier = true,
945
/* VK_KHR_performance_query */
946
.performanceCounterQueryPools = has_perf_query,
947
.performanceCounterMultipleQueryPools = has_perf_query,
949
/* VK_NV_device_generated_commands */
950
.deviceGeneratedCommands = true,
952
/* VK_EXT_attachment_feedback_loop_layout */
953
.attachmentFeedbackLoopLayout = true,
955
/* VK_EXT_graphics_pipeline_library */
956
.graphicsPipelineLibrary = true,
958
/* VK_EXT_extended_dynamic_state3 */
959
.extendedDynamicState3TessellationDomainOrigin = true,
960
.extendedDynamicState3PolygonMode = true,
961
.extendedDynamicState3SampleMask = true,
962
.extendedDynamicState3AlphaToCoverageEnable = pdevice->rad_info.gfx_level < GFX11,
963
.extendedDynamicState3LogicOpEnable = true,
964
.extendedDynamicState3LineStippleEnable = true,
965
.extendedDynamicState3ColorBlendEnable = true,
966
.extendedDynamicState3DepthClipEnable = true,
967
.extendedDynamicState3ConservativeRasterizationMode = pdevice->rad_info.gfx_level >= GFX9,
968
.extendedDynamicState3DepthClipNegativeOneToOne = true,
969
.extendedDynamicState3ProvokingVertexMode = true,
970
.extendedDynamicState3DepthClampEnable = true,
971
.extendedDynamicState3ColorWriteMask = true,
972
.extendedDynamicState3RasterizationSamples = true,
973
.extendedDynamicState3ColorBlendEquation = true,
974
.extendedDynamicState3SampleLocationsEnable = pdevice->rad_info.gfx_level < GFX10,
975
.extendedDynamicState3LineRasterizationMode = true,
976
.extendedDynamicState3ExtraPrimitiveOverestimationSize = false,
977
.extendedDynamicState3AlphaToOneEnable = false,
978
.extendedDynamicState3RasterizationStream = false,
979
.extendedDynamicState3ColorBlendAdvanced = false,
980
.extendedDynamicState3ViewportWScalingEnable = false,
981
.extendedDynamicState3ViewportSwizzle = false,
982
.extendedDynamicState3CoverageToColorEnable = false,
983
.extendedDynamicState3CoverageToColorLocation = false,
984
.extendedDynamicState3CoverageModulationMode = false,
985
.extendedDynamicState3CoverageModulationTableEnable = false,
986
.extendedDynamicState3CoverageModulationTable = false,
987
.extendedDynamicState3CoverageReductionMode = false,
988
.extendedDynamicState3RepresentativeFragmentTestEnable = false,
989
.extendedDynamicState3ShadingRateImageEnable = false,
991
/* VK_EXT_descriptor_buffer */
992
.descriptorBuffer = true,
993
.descriptorBufferCaptureReplay = false,
994
.descriptorBufferImageLayoutIgnored = true,
995
.descriptorBufferPushDescriptors = true,
997
/* VK_AMD_shader_early_and_late_fragment_tests */
998
.shaderEarlyAndLateFragmentTests = true,
1000
/* VK_EXT_image_sliced_view_of_3d */
1001
.imageSlicedViewOf3D = true,
1289
1003
#ifdef RADV_USE_WSI_PLATFORM
1290
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: {
1291
VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *features =
1292
(VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *)ext;
1293
features->swapchainMaintenance1 = true;
1004
/* VK_EXT_swapchain_maintenance1 */
1005
.swapchainMaintenance1 = true,
1008
/* VK_EXT_attachment_feedback_loop_dynamic_state */
1009
.attachmentFeedbackLoopDynamicState = true,
1011
/* VK_EXT_dynamic_rendering_unused_attachments */
1012
.dynamicRenderingUnusedAttachments = true,
1014
/* VK_KHR_fragment_shader_barycentric */
1015
.fragmentShaderBarycentric = true,
1017
/* VK_EXT_depth_bias_control */
1018
.depthBiasControl = true,
1019
.leastRepresentableValueForceUnormRepresentation = true,
1020
.floatRepresentation = true,
1021
.depthBiasExact = true,
1023
/* VK_EXT_fragment_shader_interlock */
1024
.fragmentShaderSampleInterlock = has_fragment_shader_interlock,
1025
.fragmentShaderPixelInterlock = has_fragment_shader_interlock,
1026
.fragmentShaderShadingRateInterlock = false,
1028
/* VK_EXT_pipeline_robustness */
1029
.pipelineRobustness = true,