Mesa (master): i965/skl: Lay out 3D textures the same as array textures

Neil Roberts nroberts at kemper.freedesktop.org
Mon Mar 2 12:08:07 UTC 2015


Module: Mesa
Branch: master
Commit: 0f1e86afd65952df00b82e55c4b7371645cf6fbc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f1e86afd65952df00b82e55c4b7371645cf6fbc

Author: Neil Roberts <neil at linux.intel.com>
Date:   Wed Feb 18 18:27:45 2015 +0000

i965/skl: Lay out 3D textures the same as array textures

On Gen9+ the 3D textures use the same mipmap layout as 2D array
textures.

Reviewed-by: Ben Widawsky <ben at bwidawsk.net>

---

 src/mesa/drivers/dri/i965/brw_tex_layout.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index 66d1b4f..6923a8f 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -227,6 +227,9 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
 
       width  = minify(width, 1);
       height = minify(height, 1);
+
+      if (mt->target == GL_TEXTURE_3D)
+         depth = minify(depth, 1);
    }
 }
 
@@ -266,7 +269,7 @@ brw_miptree_layout_texture_array(struct brw_context *brw,
       if (mt->compressed)
          img_height /= mt->align_h;
 
-      for (int q = 0; q < mt->physical_depth0; q++) {
+      for (int q = 0; q < mt->level[level].depth; q++) {
          if (mt->array_layout == ALL_SLICES_AT_EACH_LOD) {
             intel_miptree_set_image_offset(mt, level, q, 0, q * img_height);
          } else {
@@ -371,7 +374,10 @@ brw_miptree_layout(struct brw_context *brw, struct intel_mipmap_tree *mt)
       break;
 
    case GL_TEXTURE_3D:
-      brw_miptree_layout_texture_3d(brw, mt);
+      if (brw->gen >= 9)
+         brw_miptree_layout_texture_array(brw, mt);
+      else
+         brw_miptree_layout_texture_3d(brw, mt);
       break;
 
    case GL_TEXTURE_1D_ARRAY:




More information about the mesa-commit mailing list