iris: Fix partial fast clear checks to account for miplevel.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 29 Aug 2019 01:05:57 +0000 (18:05 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 29 Aug 2019 18:27:16 +0000 (11:27 -0700)
We enabled fast clears at level > 0, but didn't minify the dimensions
when comparing the box size, so we always thought it was a partial
clear and as a result never actually enabled any.

This eliminates some slow clears in Civilization VI, but they are mostly
during initialization and not the main rendering.

Thanks to Dan Walsh for noticing we had too many slow clears.

Fixes: 393f659ed83 ("iris: Enable fast clears on other miplevels and layers than 0.")
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
src/gallium/drivers/iris/iris_clear.c

index 5b2961f8a7d901c5d5b5613ec0748bd8bfb37937..ff78352a9f2d70e62cdb2a6728ed3d229862e70c 100644 (file)
@@ -80,8 +80,8 @@ can_fast_clear_color(struct iris_context *ice,
 
    /* Check for partial clear */
    if (box->x > 0 || box->y > 0 ||
-       box->width < p_res->width0 ||
-       box->height < p_res->height0) {
+       box->width < minify(p_res->width0, level) ||
+       box->height < minify(p_res->height0, level)) {
       return false;
    }