radv: advertise VK_KHR_fragment_shading_rate on GFX10.3+
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 30 Nov 2020 17:54:06 +0000 (18:54 +0100)
committerMarge Bot <eric+marge@anholt.net>
Mon, 14 Dec 2020 16:22:39 +0000 (16:22 +0000)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7837>

docs/relnotes/new_features.txt
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_extensions.py

index 43b5b1c..9a016aa 100644 (file)
@@ -6,3 +6,4 @@ driconf: remove glx_disable_oml_sync_control, glx_disable_sgi_video_sync, and gl
 Removed support for loading DRI drivers older than Mesa 8.0, including all DRI1 support
 Add support for VK_VALVE_mutable_descriptor_type on RADV
 Removed classic OSMesa in favor of the newly improved gallium OSMesa
+VK_KHR_fragment_shading_rate on RADV (RDNA2 only)
index b6e6f53..3811c32 100644 (file)
@@ -1466,6 +1466,14 @@ void radv_GetPhysicalDeviceFeatures2(
                        features->mutableDescriptorType = true;
                        break;
                }
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: {
+                       VkPhysicalDeviceFragmentShadingRateFeaturesKHR *features =
+                               (VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)ext;
+                       features->pipelineFragmentShadingRate = true;
+                       features->primitiveFragmentShadingRate = true;
+                       features->attachmentFragmentShadingRate = false; /* TODO */
+                       break;
+               }
                default:
                        break;
                }
@@ -2128,6 +2136,32 @@ void radv_GetPhysicalDeviceProperties2(
                        props->maxCustomBorderColorSamplers = RADV_BORDER_COLOR_COUNT;
                        break;
                }
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR: {
+                       VkPhysicalDeviceFragmentShadingRatePropertiesKHR *props =
+                               (VkPhysicalDeviceFragmentShadingRatePropertiesKHR *)ext;
+                       props->minFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 0, 0 };
+                       props->maxFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 0, 0 };
+                       props->maxFragmentShadingRateAttachmentTexelSizeAspectRatio = 0;
+                       props->primitiveFragmentShadingRateWithMultipleViewports = true;
+                       props->layeredShadingRateAttachments = false;
+                       props->fragmentShadingRateNonTrivialCombinerOps = true;
+                       props->maxFragmentSize = (VkExtent2D) { 2, 2 };
+                       props->maxFragmentSizeAspectRatio = 1;
+                       props->maxFragmentShadingRateCoverageSamples = 1;
+                       props->maxFragmentShadingRateRasterizationSamples =
+                               VK_SAMPLE_COUNT_1_BIT |
+                               VK_SAMPLE_COUNT_2_BIT |
+                               VK_SAMPLE_COUNT_4_BIT |
+                               VK_SAMPLE_COUNT_8_BIT;
+                       props->fragmentShadingRateWithShaderDepthStencilWrites = false;
+                       props->fragmentShadingRateWithSampleMask = true;
+                       props->fragmentShadingRateWithShaderSampleMask = false;
+                       props->fragmentShadingRateWithConservativeRasterization = true;
+                       props->fragmentShadingRateWithFragmentShaderInterlock = false;
+                       props->fragmentShadingRateWithCustomSampleLocations = true;
+                       props->fragmentShadingRateStrictMultiplyCombiner = true;
+                       break;
+               }
                default:
                        break;
                }
index bc4acd4..7f3d8d6 100644 (file)
@@ -78,7 +78,7 @@ EXTENSIONS = [
     Extension('VK_KHR_external_semaphore',                1, 'device->rad_info.has_syncobj'),
     Extension('VK_KHR_external_semaphore_capabilities',   1, True),
     Extension('VK_KHR_external_semaphore_fd',             1, 'device->rad_info.has_syncobj'),
-    Extension('VK_KHR_fragment_shading_rate',             1, False),
+    Extension('VK_KHR_fragment_shading_rate',             1, 'device->rad_info.chip_class >= GFX10_3'),
     Extension('VK_KHR_get_display_properties2',           1, 'VK_USE_PLATFORM_DISPLAY_KHR'),
     Extension('VK_KHR_get_memory_requirements2',          1, True),
     Extension('VK_KHR_get_physical_device_properties2',   1, True),