[Mesa-dev] [PATCH 1/5] i965/mipmap_tree: Add a depth parameter to create_for_bo

Jason Ekstrand jason at jlekstrand.net
Thu Jan 8 16:47:13 PST 2015


---
 src/mesa/drivers/dri/i965/intel_fbo.c         | 1 +
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 9 +++++++--
 src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 1 +
 src/mesa/drivers/dri/i965/intel_pixel_draw.c  | 2 +-
 src/mesa/drivers/dri/i965/intel_pixel_read.c  | 2 +-
 src/mesa/drivers/dri/i965/intel_tex_image.c   | 6 +++---
 6 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c
index 37ac613f..360c6de 100644
--- a/src/mesa/drivers/dri/i965/intel_fbo.c
+++ b/src/mesa/drivers/dri/i965/intel_fbo.c
@@ -389,6 +389,7 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx,
                                          image->offset,
                                          image->width,
                                          image->height,
+                                         1,
                                          image->pitch);
    if (!irb->mt)
       return;
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index f815fbe..7d904b5 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -671,10 +671,12 @@ intel_miptree_create_for_bo(struct brw_context *brw,
                             uint32_t offset,
                             uint32_t width,
                             uint32_t height,
+                            uint32_t depth,
                             int pitch)
 {
    struct intel_mipmap_tree *mt;
    uint32_t tiling, swizzle;
+   GLenum target;
 
    drm_intel_bo_get_tiling(bo, &tiling, &swizzle);
 
@@ -689,9 +691,11 @@ intel_miptree_create_for_bo(struct brw_context *brw,
     */
    assert(pitch >= 0);
 
-   mt = intel_miptree_create_layout(brw, GL_TEXTURE_2D, format,
+   target = depth > 1 ? GL_TEXTURE_2D_ARRAY : GL_TEXTURE_2D;
+
+   mt = intel_miptree_create_layout(brw, target, format,
                                     0, 0,
-                                    width, height, 1,
+                                    width, height, depth,
                                     true, 0, false);
    if (!mt) {
       free(mt);
@@ -742,6 +746,7 @@ intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
                                                  0,
                                                  width,
                                                  height,
+                                                 1,
                                                  pitch);
    if (!singlesample_mt)
       goto fail;
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
index 44ddc60..ee9cf1e 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
@@ -526,6 +526,7 @@ intel_miptree_create_for_bo(struct brw_context *brw,
                             uint32_t offset,
                             uint32_t width,
                             uint32_t height,
+                            uint32_t depth,
                             int pitch);
 
 void
diff --git a/src/mesa/drivers/dri/i965/intel_pixel_draw.c b/src/mesa/drivers/dri/i965/intel_pixel_draw.c
index 8222f33..e0904de 100644
--- a/src/mesa/drivers/dri/i965/intel_pixel_draw.c
+++ b/src/mesa/drivers/dri/i965/intel_pixel_draw.c
@@ -110,7 +110,7 @@ do_blit_drawpixels(struct gl_context * ctx,
                                   src_buffer,
                                   irb->mt->format,
                                   src_offset,
-                                  width, height,
+                                  width, height, 1,
                                   src_stride);
    if (!pbo_mt)
       return false;
diff --git a/src/mesa/drivers/dri/i965/intel_pixel_read.c b/src/mesa/drivers/dri/i965/intel_pixel_read.c
index beb3152..688a919 100644
--- a/src/mesa/drivers/dri/i965/intel_pixel_read.c
+++ b/src/mesa/drivers/dri/i965/intel_pixel_read.c
@@ -142,7 +142,7 @@ do_blit_readpixels(struct gl_context * ctx,
                                   dst_buffer,
                                   irb->mt->format,
                                   dst_offset,
-                                  width, height,
+                                  width, height, 1,
                                   dst_stride);
 
    if (!intel_miptree_blit(brw,
diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c b/src/mesa/drivers/dri/i965/intel_tex_image.c
index 3317779..1e56f84 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_image.c
@@ -143,7 +143,7 @@ try_pbo_upload(struct gl_context *ctx,
                                   src_buffer,
                                   intelImage->mt->format,
                                   src_offset,
-                                  image->Width, image->Height,
+                                  image->Width, image->Height, 1,
                                   src_stride);
    if (!pbo_mt)
       return false;
@@ -236,7 +236,7 @@ intel_set_texture_image_bo(struct gl_context *ctx,
    ctx->Driver.FreeTextureImageBuffer(ctx, image);
 
    intel_image->mt = intel_miptree_create_for_bo(brw, bo, image->TexFormat,
-                                                 0, width, height, pitch);
+                                                 0, width, height, 1, pitch);
    if (intel_image->mt == NULL)
        return;
    intel_image->mt->target = target;
@@ -488,7 +488,7 @@ blit_texture_to_pbo(struct gl_context *ctx,
                                   dst_buffer,
                                   intelImage->mt->format,
                                   dst_offset,
-                                  texImage->Width, texImage->Height,
+                                  texImage->Width, texImage->Height, 1,
                                   dst_stride);
 
    if (!pbo_mt)
-- 
2.2.0



More information about the mesa-dev mailing list