iris: allow compression conditionally for images on gen12
authorTapani Pälli <tapani.palli@intel.com>
Thu, 12 Mar 2020 06:24:09 +0000 (08:24 +0200)
committerMarge Bot <eric+marge@anholt.net>
Mon, 16 Mar 2020 10:34:21 +0000 (10:34 +0000)
With this change, amount of resolves happening with deqp-gles31
(--deqp-case=*load_store*) drops ~50%.

v2: use iris_image_view_get_format to get the format,
    get devinfo from context instead of passing it (Nanley)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4080>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4080>

src/gallium/drivers/iris/iris_resolve.c

index cfcbcbfc31d6b39a4ad3e8494bbaea16bc37080e..cbe2369c849c6760f4c8959f4c9ab01155685d23 100644 (file)
@@ -993,6 +993,24 @@ iris_image_view_aux_usage(struct iris_context *ice,
                           const struct pipe_image_view *pview,
                           const struct shader_info *info)
 {
+   if (!info)
+      return ISL_AUX_USAGE_NONE;
+
+   struct iris_screen *screen = (void *) ice->ctx.screen;
+   const struct gen_device_info *devinfo = &screen->devinfo;
+   struct iris_resource *res = (void *) pview->resource;
+
+   enum isl_format view_format = iris_image_view_get_format(ice, pview);
+   enum isl_aux_usage aux_usage =
+      iris_resource_texture_aux_usage(ice, res, view_format);
+
+   bool uses_atomic_load_store =
+      ice->shaders.uncompiled[info->stage]->uses_atomic_load_store;
+
+   if ((devinfo->gen == 12 && aux_usage == ISL_AUX_USAGE_CCS_E) &&
+       !uses_atomic_load_store)
+      return ISL_AUX_USAGE_CCS_E;
+
    return ISL_AUX_USAGE_NONE;
 }