i965/miptree: Prepare range getter for isl based
authorTopi Pohjolainen <topi.pohjolainen@intel.com>
Tue, 13 Jun 2017 09:30:26 +0000 (12:30 +0300)
committerTopi Pohjolainen <topi.pohjolainen@intel.com>
Mon, 19 Jun 2017 19:57:56 +0000 (22:57 +0300)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index b5e30e8e1da08b508d1e43548e53109de8ff08f7..455878c5a404988ebea9a0874f53c053d4434476 100644 (file)
@@ -2513,7 +2513,14 @@ miptree_layer_range_length(const struct intel_mipmap_tree *mt, uint32_t level,
                            uint32_t start_layer, uint32_t num_layers)
 {
    assert(level <= mt->last_level);
-   uint32_t total_num_layers = mt->level[level].depth;
+   uint32_t total_num_layers;
+
+   if (mt->surf.size > 0)
+      total_num_layers = mt->surf.dim == ISL_SURF_DIM_3D ?
+         minify(mt->surf.phys_level0_sa.depth, level) :
+         mt->surf.phys_level0_sa.array_len;
+   else 
+      total_num_layers = mt->level[level].depth;
 
    assert(start_layer < total_num_layers);
    if (num_layers == INTEL_REMAINING_LAYERS)