Mesa (main): crocus: fixup render aux usage function.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 16 03:56:13 UTC 2021


Module: Mesa
Branch: main
Commit: 2a540877d13f7f7cae247de44e03219e70da732f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2a540877d13f7f7cae247de44e03219e70da732f

Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Jun 16 13:35:11 2021 +1000

crocus: fixup render aux usage function.

This got misaligned somewhere in development, should fix the
regressions vs i965 in tesseract as seen on phoronix benchmarks.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11409>

---

 src/gallium/drivers/crocus/crocus_clear.c    |  3 +--
 src/gallium/drivers/crocus/crocus_resolve.c  | 11 ++++++++---
 src/gallium/drivers/crocus/crocus_resource.h |  2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/crocus/crocus_clear.c b/src/gallium/drivers/crocus/crocus_clear.c
index 1c56e23f794..8ea21d9d227 100644
--- a/src/gallium/drivers/crocus/crocus_clear.c
+++ b/src/gallium/drivers/crocus/crocus_clear.c
@@ -362,8 +362,7 @@ clear_color(struct crocus_context *ice,
 
    bool color_write_disable[4] = { false, false, false, false };
    enum isl_aux_usage aux_usage =
-      crocus_resource_render_aux_usage(ice, res, format,
-                                       false, false);
+      crocus_resource_render_aux_usage(ice, res, level, format, false);
 
    crocus_resource_prepare_render(ice, res, level,
                                   box->z, box->depth, aux_usage);
diff --git a/src/gallium/drivers/crocus/crocus_resolve.c b/src/gallium/drivers/crocus/crocus_resolve.c
index a38eb4a94a7..ae9334a0b5f 100644
--- a/src/gallium/drivers/crocus/crocus_resolve.c
+++ b/src/gallium/drivers/crocus/crocus_resolve.c
@@ -279,8 +279,8 @@ crocus_predraw_resolve_framebuffer(struct crocus_context *ice,
             crocus_update_align_res(batch, surf, true);
 
          enum isl_aux_usage aux_usage =
-            crocus_resource_render_aux_usage(ice, res, surf->view.format,
-                                             ice->state.blend_enables & (1u << i),
+            crocus_resource_render_aux_usage(ice, res, surf->view.base_level,
+                                             surf->view.format,
                                              draw_aux_buffer_disabled[i]);
 
          if (ice->state.draw_aux_usage[i] != aux_usage) {
@@ -984,8 +984,8 @@ crocus_resource_prepare_texture(struct crocus_context *ice,
 enum isl_aux_usage
 crocus_resource_render_aux_usage(struct crocus_context *ice,
                                  struct crocus_resource *res,
+                                 uint32_t level,
                                  enum isl_format render_format,
-                                 bool blend_enabled,
                                  bool draw_aux_disabled)
 {
    struct crocus_screen *screen = (void *) ice->ctx.screen;
@@ -1005,6 +1005,11 @@ crocus_resource_render_aux_usage(struct crocus_context *ice,
 
       return ISL_AUX_USAGE_NONE;
 
+   case ISL_AUX_USAGE_HIZ:
+      assert(render_format == res->surf.format);
+      return crocus_resource_level_has_hiz(res, level) ?
+         res->aux.usage : ISL_AUX_USAGE_NONE;
+
    default:
       return ISL_AUX_USAGE_NONE;
    }
diff --git a/src/gallium/drivers/crocus/crocus_resource.h b/src/gallium/drivers/crocus/crocus_resource.h
index 505bf0ad41e..725732cf109 100644
--- a/src/gallium/drivers/crocus/crocus_resource.h
+++ b/src/gallium/drivers/crocus/crocus_resource.h
@@ -497,8 +497,8 @@ bool crocus_has_color_unresolved(const struct crocus_resource *res,
 
 enum isl_aux_usage crocus_resource_render_aux_usage(struct crocus_context *ice,
                                                     struct crocus_resource *res,
+                                                    uint32_t level,
                                                     enum isl_format render_fmt,
-                                                    bool blend_enabled,
                                                     bool draw_aux_disabled);
 void crocus_resource_prepare_render(struct crocus_context *ice,
                                     struct crocus_resource *res, uint32_t level,



More information about the mesa-commit mailing list