ilo: fix a false assertion failure on GEN6
authorChia-I Wu <olvaffe@gmail.com>
Wed, 15 Jan 2014 18:10:45 +0000 (02:10 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Sat, 22 Feb 2014 14:45:12 +0000 (22:45 +0800)
Layer offsetting is possible when it is level 0, layer 0.

src/gallium/drivers/ilo/ilo_gpe_gen6.c

index c8ad38b7782fe94707eb0b82cd507e75c552f912..3ea8b8f5e777246a5b6e69acc58a4eb6c78fd514 100644 (file)
@@ -1115,10 +1115,18 @@ zs_init_info(const struct ilo_dev_info *dev,
       info->hiz.stride = tex->hiz.bo_stride;
       info->hiz.tiling = INTEL_TILING_Y;
 
-      assert(!offset_to_layer);
-      info->hiz.offset = 0;
-      x_offset[2] = 0;
-      y_offset[2] = 0;
+      /*
+       * Layer offsetting is used on GEN6 only.  And on GEN6, HiZ is enabled
+       * only when the depth buffer is non-mipmapped and non-array, making
+       * layer offsetting no-op.
+       */
+      if (offset_to_layer) {
+         assert(level == 0 && first_layer == 0 && num_layers == 1);
+
+         info->hiz.offset = 0;
+         x_offset[2] = 0;
+         y_offset[2] = 0;
+      }
    }
 
    info->width = tex->base.width0;