diff --git a/docs/features.txt b/docs/features.txt index 4c4d86fcfdc..414720aaaec 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -549,7 +549,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_depth_range_unrestricted DONE (radv, lvp) VK_EXT_discard_rectangles DONE (radv) VK_EXT_display_control DONE (anv, radv, tu) - VK_EXT_extended_dynamic_state3 DONE (lvp) + VK_EXT_extended_dynamic_state3 DONE (lvp, radv) VK_EXT_external_memory_dma_buf DONE (anv, pvr, radv, tu, v3dv, vn) VK_EXT_external_memory_host DONE (anv, lvp, radv) VK_EXT_filter_cubic DONE (tu/a650) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index e70997fedc0..ac9c2392876 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -11,3 +11,4 @@ VK_EXT_shader_atomic_float2 on lvp GL_NV_shader_atomic_float on llvmpipe VK_EXT_image_robustness on v3dv VK_EXT_extended_dynamic_state3 on lavapipe +VK_EXT_extended_dynamic_state3 on RADV diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 6db09cc5316..558ee0089bf 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -549,6 +549,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device #endif .EXT_extended_dynamic_state = true, .EXT_extended_dynamic_state2 = true, + .EXT_extended_dynamic_state3 = true, .EXT_external_memory_dma_buf = true, .EXT_external_memory_host = device->rad_info.has_userptr, .EXT_global_priority = true, @@ -1859,6 +1860,42 @@ radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, features->graphicsPipelineLibrary = true; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: { + VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *features = + (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *)ext; + features->extendedDynamicState3TessellationDomainOrigin = true; + features->extendedDynamicState3PolygonMode = true; + features->extendedDynamicState3SampleMask = true; + features->extendedDynamicState3AlphaToCoverageEnable = pdevice->rad_info.gfx_level < GFX11; + features->extendedDynamicState3LogicOpEnable = true; + features->extendedDynamicState3LineStippleEnable = true; + features->extendedDynamicState3ColorBlendEnable = false; /* TODO: Zink */ + features->extendedDynamicState3DepthClipEnable = true; + features->extendedDynamicState3ConservativeRasterizationMode = true; + features->extendedDynamicState3DepthClipNegativeOneToOne = true; + features->extendedDynamicState3ProvokingVertexMode = !pdevice->use_ngg; /* TODO: NGG */ + features->extendedDynamicState3DepthClampEnable = true; + features->extendedDynamicState3ColorWriteMask = false; /* TODO: Zink */ + features->extendedDynamicState3RasterizationSamples = false; /* TODO: Zink */ + features->extendedDynamicState3ColorBlendEquation = false; /* TODO: Zink */ + features->extendedDynamicState3SampleLocationsEnable = false; /* TODO: Zink */ + features->extendedDynamicState3LineRasterizationMode = false; /* TODO: Zink */ + features->extendedDynamicState3ExtraPrimitiveOverestimationSize = false; + features->extendedDynamicState3AlphaToOneEnable = false; + features->extendedDynamicState3RasterizationStream = false; + features->extendedDynamicState3ColorBlendAdvanced = false; + features->extendedDynamicState3ViewportWScalingEnable = false; + features->extendedDynamicState3ViewportSwizzle = false; + features->extendedDynamicState3CoverageToColorEnable = false; + features->extendedDynamicState3CoverageToColorLocation = false; + features->extendedDynamicState3CoverageModulationMode = false; + features->extendedDynamicState3CoverageModulationTableEnable = false; + features->extendedDynamicState3CoverageModulationTable = false; + features->extendedDynamicState3CoverageReductionMode = false; + features->extendedDynamicState3RepresentativeFragmentTestEnable = false; + features->extendedDynamicState3ShadingRateImageEnable = false; + break; + } default: break; } @@ -2639,6 +2676,12 @@ radv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT: { + VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *properties = + (VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *)ext; + properties->dynamicPrimitiveTopologyUnrestricted = false; + break; + } default: break; }