anv: Enable stencil buffer compression on Gen12+
authorSagar Ghuge <sagar.ghuge@intel.com>
Fri, 24 Apr 2020 17:41:42 +0000 (10:41 -0700)
committerMarge Bot <eric+marge@anholt.net>
Thu, 22 Oct 2020 21:42:36 +0000 (21:42 +0000)
v2: (Nanley Chery)
- Fix condition check.
- Move aux_usage assignment after add_aux_state_tracking_buffer method.

v3: (Nanley Chery)
- Move stencil condition close to depth block.

v4: (Nanley Chery)
- Add DEBUG_NO_RBC condition.

v5: (Nanley Chery)
- Don't add CCS plane explicitly.
- Use isl_surf_supports_ccs.

v6:
- Simplify condition (Nanley Chery)

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2942>

src/intel/vulkan/anv_image.c

index 60b3911..d07d0ec 100644 (file)
@@ -426,6 +426,16 @@ add_aux_surface_if_supported(struct anv_device *device,
          image->planes[plane].aux_usage = ISL_AUX_USAGE_HIZ_CCS;
       }
       add_surface(image, &image->planes[plane].aux_surface, plane);
+   } else if (aspect == VK_IMAGE_ASPECT_STENCIL_BIT) {
+
+      if (INTEL_DEBUG & DEBUG_NO_RBC)
+         return VK_SUCCESS;
+
+      if (!isl_surf_supports_ccs(&device->isl_dev,
+                                 &image->planes[plane].surface.isl))
+         return VK_SUCCESS;
+
+      image->planes[plane].aux_usage = ISL_AUX_USAGE_STC_CCS;
    } else if ((aspect & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) && image->samples == 1) {
       if (image->n_planes != 1) {
          /* Multiplanar images seem to hit a sampler bug with CCS and R16G16