anv: Do not sample from 3d depth image with HiZ
authorDanylo Piliaiev <danylo.piliaiev@globallogic.com>
Wed, 1 Apr 2020 15:41:03 +0000 (18:41 +0300)
committerMarge Bot <eric+marge@anholt.net>
Wed, 1 Apr 2020 20:12:29 +0000 (20:12 +0000)
For Gen8-11, there are some restrictions around sampling from HiZ.
The Skylake PRM docs for RENDER_SURFACE_STATE::AuxiliarySurfaceMode
say:

    "If this field is set to AUX_HIZ, Number of Multisamples must
    be MULTISAMPLECOUNT_1, and Surface Type cannot be SURFTYPE_3D."

Fixes: dEQP-VK.geometry.layered.3d.*.readback
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2720
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Arcady Goldmints-Orlov <agoldmints@igalia.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4409>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4409>

src/intel/vulkan/anv_private.h

index d4e237025d0b09050dcaa9902e5462bdd03c1208..d7134101c2024093f115b50877fe9bff5604d65b 100644 (file)
@@ -3684,6 +3684,16 @@ anv_can_sample_with_hiz(const struct gen_device_info * const devinfo,
    if (!(image->aspects & VK_IMAGE_ASPECT_DEPTH_BIT))
       return false;
 
+   /* For Gen8-11, there are some restrictions around sampling from HiZ.
+    * The Skylake PRM docs for RENDER_SURFACE_STATE::AuxiliarySurfaceMode
+    * say:
+    *
+    *    "If this field is set to AUX_HIZ, Number of Multisamples must
+    *    be MULTISAMPLECOUNT_1, and Surface Type cannot be SURFTYPE_3D."
+    */
+   if (image->type == VK_IMAGE_TYPE_3D)
+      return false;
+
    /* Allow this feature on BDW even though it is disabled in the BDW devinfo
     * struct. There's documentation which suggests that this feature actually
     * reduces performance on BDW, but it has only been observed to help so