iris: Only update clear color for gens 8 and 9.
authorRafael Antognolli <rafael.antognolli@intel.com>
Tue, 26 Mar 2019 18:08:22 +0000 (11:08 -0700)
committerRafael Antognolli <rafael.antognolli@intel.com>
Tue, 2 Apr 2019 22:24:15 +0000 (15:24 -0700)
Newer gens can read it directly.

Also properly skip updating the ISL_AUX_USAGE_NONE surface.

Fixes: a8b5ea8ef015ed4a "iris: Add function to update clear color in surface state."
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/gallium/drivers/iris/iris_state.c

index 25c2af9845e9f9af69dd97c5a7b0fb5c74375048..50956ec7243a090ef24c5ed1fcffe38af2677b7f 100644 (file)
@@ -3785,8 +3785,17 @@ update_clear_value(struct iris_batch *batch,
                    struct iris_resource *res,
                    struct iris_state_ref *state)
 {
+   struct iris_screen *screen = batch->screen;
+   const struct gen_device_info *devinfo = &screen->devinfo;
+
+   /* We only need to update the clear color in the surface state for gen8 and
+    * gen9. Newer gens can read it directly from the clear color state buffer.
+    */
+   if (devinfo->gen > 9)
+      return;
+
    unsigned aux_modes = res->aux.possible_usages;
-   aux_modes &= ~ISL_AUX_USAGE_NONE;
+   aux_modes &= ~(1 << ISL_AUX_USAGE_NONE);
 
    while (aux_modes) {
       enum isl_aux_usage aux_usage = u_bit_scan(&aux_modes);