Mesa (master): iris: Allow HiZ for copy_region sources

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Jan 4 20:41:35 UTC 2020


Module: Mesa
Branch: master
Commit: c0c899cf7892bd2326e6d21a920c7be42de06731
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0c899cf7892bd2326e6d21a920c7be42de06731

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Dec 25 23:43:01 2019 -0800

iris: Allow HiZ for copy_region sources

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/gallium/drivers/iris/iris_blit.c     |  9 +++++++++
 src/gallium/drivers/iris/iris_resolve.c  | 10 +++++-----
 src/gallium/drivers/iris/iris_resource.h |  4 ++++
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_blit.c b/src/gallium/drivers/iris/iris_blit.c
index e803950a560..f58bf343892 100644
--- a/src/gallium/drivers/iris/iris_blit.c
+++ b/src/gallium/drivers/iris/iris_blit.c
@@ -573,6 +573,15 @@ get_copy_region_aux_settings(const struct gen_device_info *devinfo,
                              bool is_render_target)
 {
    switch (res->aux.usage) {
+   case ISL_AUX_USAGE_HIZ:
+      if (!is_render_target && iris_sample_with_depth_aux(devinfo, res)) {
+         *out_aux_usage = ISL_AUX_USAGE_HIZ;
+         *out_clear_supported = true;
+      } else {
+         *out_aux_usage = ISL_AUX_USAGE_NONE;
+         *out_clear_supported = false;
+      }
+      break;
    case ISL_AUX_USAGE_MCS:
    case ISL_AUX_USAGE_MCS_CCS:
    case ISL_AUX_USAGE_CCS_E:
diff --git a/src/gallium/drivers/iris/iris_resolve.c b/src/gallium/drivers/iris/iris_resolve.c
index ddd86ea2385..eb9c0f0cfd9 100644
--- a/src/gallium/drivers/iris/iris_resolve.c
+++ b/src/gallium/drivers/iris/iris_resolve.c
@@ -559,9 +559,9 @@ format_ccs_e_compat_with_resource(const struct gen_device_info *devinfo,
    return isl_formats_are_ccs_e_compatible(devinfo, isl_format, access_format);
 }
 
-static bool
-sample_with_depth_aux(const struct gen_device_info *devinfo,
-                      const struct iris_resource *res)
+bool
+iris_sample_with_depth_aux(const struct gen_device_info *devinfo,
+                           const struct iris_resource *res)
 {
    switch (res->aux.usage) {
    case ISL_AUX_USAGE_HIZ:
@@ -1339,12 +1339,12 @@ iris_resource_texture_aux_usage(struct iris_context *ice,
 
    switch (res->aux.usage) {
    case ISL_AUX_USAGE_HIZ:
-      if (sample_with_depth_aux(devinfo, res))
+      if (iris_sample_with_depth_aux(devinfo, res))
          return ISL_AUX_USAGE_HIZ;
       break;
 
    case ISL_AUX_USAGE_HIZ_CCS:
-      if (sample_with_depth_aux(devinfo, res))
+      if (iris_sample_with_depth_aux(devinfo, res))
          return ISL_AUX_USAGE_CCS_E;
       break;
 
diff --git a/src/gallium/drivers/iris/iris_resource.h b/src/gallium/drivers/iris/iris_resource.h
index ab09279d02b..52f8396bd77 100644
--- a/src/gallium/drivers/iris/iris_resource.h
+++ b/src/gallium/drivers/iris/iris_resource.h
@@ -475,6 +475,10 @@ void iris_resource_check_level_layer(const struct iris_resource *res,
 
 bool iris_resource_level_has_hiz(const struct iris_resource *res,
                                  uint32_t level);
+
+bool iris_sample_with_depth_aux(const struct gen_device_info *devinfo,
+                                const struct iris_resource *res);
+
 bool iris_has_color_unresolved(const struct iris_resource *res,
                                unsigned start_level, unsigned num_levels,
                                unsigned start_layer, unsigned num_layers);




More information about the mesa-commit mailing list