[Mesa-dev] [PATCH 07/32] i965/miptree: Make layer_range_length return locical layers

Jason Ekstrand jason at jlekstrand.net
Wed Jul 19 21:01:33 UTC 2017


---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 3eac077..8d8ea43 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -2461,12 +2461,18 @@ miptree_layer_range_length(const struct intel_mipmap_tree *mt, uint32_t level,
    assert(level <= mt->last_level);
    uint32_t total_num_layers;
 
-   if (mt->surf.size > 0)
+   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 
+         minify(mt->surf.logical_level0_px.depth, level) :
+         mt->surf.logical_level0_px.array_len;
+   } else {
       total_num_layers = mt->level[level].depth;
+      if (mt->msaa_layout == INTEL_MSAA_LAYOUT_UMS ||
+          mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
+         assert(total_num_layers % mt->num_samples == 0);
+         total_num_layers /= mt->num_samples;
+      }
+   }
 
    assert(start_layer < total_num_layers);
    if (num_layers == INTEL_REMAINING_LAYERS)
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list