summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanley Chery <nanley.g.chery@intel.com>2020-09-24 10:01:11 -0700
committerEric Engestrom <eric@engestrom.ch>2020-09-27 11:11:33 +0200
commit02f2b9fa7b63e1ec3a5f026cfe968c5f61586ff3 (patch)
tree920f4007ad9b29fcd45ac4ff6e492da710182269
parent083b992f9d9552b164b2bdd2e7a7f239498db491 (diff)
blorp: Ensure aligned HIZ_CCS_WT partial clears
Fixes: 5425fcf2cb3 ("intel/blorp: Satisfy HIZ_CCS fast-clear alignments") Reported-by: Sagar Ghuge <sagar.ghuge@intel.com> Tested-by: Ivan Briano <ivan.briano@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6854> (cherry picked from commit 7f3e881c6cd179a9a541a673f0fc67ef63e50cea)
-rw-r--r--.pick_status.json2
-rw-r--r--src/intel/blorp/blorp_clear.c9
2 files changed, 6 insertions, 5 deletions
diff --git a/.pick_status.json b/.pick_status.json
index 1eb43b0f80f..0f642d3823b 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -274,7 +274,7 @@
"description": "blorp: Ensure aligned HIZ_CCS_WT partial clears",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "5425fcf2cb39dc9df56593d4460b56688506c0cc"
},
diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c
index 7c7796d0b12..202d3839f73 100644
--- a/src/intel/blorp/blorp_clear.c
+++ b/src/intel/blorp/blorp_clear.c
@@ -834,11 +834,12 @@ blorp_can_hiz_clear_depth(const struct gen_device_info *devinfo,
const bool unaligned = (slice_x0 + x0) % 16 || (slice_y0 + y0) % 8 ||
(max_x1_y1 ? haligned_x1 % 16 || valigned_y1 % 8 :
x1 % 16 || y1 % 8);
- const bool alignment_used = surf->levels > 1 ||
- surf->logical_level0_px.depth > 1 ||
- surf->logical_level0_px.array_len > 1;
+ const bool partial_clear = x0 > 0 || y0 > 0 || !max_x1_y1;
+ const bool multislice_surf = surf->levels > 1 ||
+ surf->logical_level0_px.depth > 1 ||
+ surf->logical_level0_px.array_len > 1;
- if (unaligned && alignment_used)
+ if (unaligned && (partial_clear || multislice_surf))
return false;
}