anv: fixup physical device properties of fragment shading rate
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Tue, 4 May 2021 06:46:08 +0000 (09:46 +0300)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 19 May 2021 07:58:01 +0000 (10:58 +0300)
We've only enabled the extension on Gfx11+ so no need to care about
prior values.

Also fixup values of (min|max)FragmentShadingRateAttachmentTexelSize.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 231651fd89fb00 ("anv: implement VK_KHR_fragment_shading_rate")
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10607>

src/intel/vulkan/anv_device.c

index 7d43f4b..4281d82 100644 (file)
@@ -2218,43 +2218,27 @@ void anv_GetPhysicalDeviceProperties2(
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR: {
          VkPhysicalDeviceFragmentShadingRatePropertiesKHR *props =
             (VkPhysicalDeviceFragmentShadingRatePropertiesKHR *)ext;
-         if (pdevice->info.ver < 11) {
-            props->minFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 0, 0 };
-            props->maxFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 0, 0 };
-            props->maxFragmentShadingRateAttachmentTexelSizeAspectRatio = 0;
-            props->primitiveFragmentShadingRateWithMultipleViewports = false;
-            props->layeredShadingRateAttachments = false;
-            props->fragmentShadingRateNonTrivialCombinerOps = true;
-            props->maxFragmentSize = (VkExtent2D) { 1, 1 };
-            props->maxFragmentSizeAspectRatio = 1;
-            props->maxFragmentShadingRateCoverageSamples = 0;
-            props->maxFragmentShadingRateRasterizationSamples = 0;
-            props->fragmentShadingRateWithShaderDepthStencilWrites = false;
-            props->fragmentShadingRateWithSampleMask = false;
-            props->fragmentShadingRateWithShaderSampleMask = false;
-            props->fragmentShadingRateWithConservativeRasterization = true;
-            props->fragmentShadingRateWithFragmentShaderInterlock = false;
-            props->fragmentShadingRateWithCustomSampleLocations = false;
-            props->fragmentShadingRateStrictMultiplyCombiner = false;
-         } else {
-            props->minFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 1, 1 };
-            props->maxFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 4, 4 };
-            props->maxFragmentShadingRateAttachmentTexelSizeAspectRatio = 0;
-            props->primitiveFragmentShadingRateWithMultipleViewports = pdevice->info.ver >= 12;
-            props->layeredShadingRateAttachments = false;
-            props->fragmentShadingRateNonTrivialCombinerOps = true;
-            props->maxFragmentSize = (VkExtent2D) { 4, 4 };
-            props->maxFragmentSizeAspectRatio = 4;
-            props->maxFragmentShadingRateCoverageSamples = 4 * 4;
-            props->maxFragmentShadingRateRasterizationSamples = VK_SAMPLE_COUNT_16_BIT;
-            props->fragmentShadingRateWithShaderDepthStencilWrites = false;
-            props->fragmentShadingRateWithSampleMask = true;
-            props->fragmentShadingRateWithShaderSampleMask = false;
-            props->fragmentShadingRateWithConservativeRasterization = true;
-            props->fragmentShadingRateWithFragmentShaderInterlock = true;
-            props->fragmentShadingRateWithCustomSampleLocations = true;
-            props->fragmentShadingRateStrictMultiplyCombiner = false;
-         }
+         /* Those must be 0 if attachmentFragmentShadingRate is not
+          * supported.
+          */
+         props->minFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 0, 0 };
+         props->maxFragmentShadingRateAttachmentTexelSize = (VkExtent2D) { 0, 0 };
+         props->maxFragmentShadingRateAttachmentTexelSizeAspectRatio = 0;
+
+         props->primitiveFragmentShadingRateWithMultipleViewports = pdevice->info.ver >= 12;
+         props->layeredShadingRateAttachments = false;
+         props->fragmentShadingRateNonTrivialCombinerOps = true;
+         props->maxFragmentSize = (VkExtent2D) { 4, 4 };
+         props->maxFragmentSizeAspectRatio = 4;
+         props->maxFragmentShadingRateCoverageSamples = 4 * 4;
+         props->maxFragmentShadingRateRasterizationSamples = VK_SAMPLE_COUNT_16_BIT;
+         props->fragmentShadingRateWithShaderDepthStencilWrites = false;
+         props->fragmentShadingRateWithSampleMask = true;
+         props->fragmentShadingRateWithShaderSampleMask = false;
+         props->fragmentShadingRateWithConservativeRasterization = true;
+         props->fragmentShadingRateWithFragmentShaderInterlock = true;
+         props->fragmentShadingRateWithCustomSampleLocations = true;
+         props->fragmentShadingRateStrictMultiplyCombiner = false;
          break;
       }