[Mesa-dev] [PATCH 02/16] mesa: Add support to query block depth using _mesa_get_format_block_size()

Anuj Phogat anuj.phogat at gmail.com
Sat Mar 5 01:29:47 UTC 2016


Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
---
 src/mesa/drivers/dri/i915/intel_mipmap_tree.c    |  8 ++++----
 src/mesa/drivers/dri/i915/intel_tex_layout.c     |  4 ++--
 src/mesa/drivers/dri/i965/brw_tex_layout.c       | 21 +++++++++++----------
 src/mesa/drivers/dri/i965/intel_copy_image.c     | 14 +++++++-------
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c    |  8 ++++----
 src/mesa/drivers/dri/nouveau/nouveau_util.h      |  8 ++++++--
 src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 11 +++++++----
 src/mesa/drivers/dri/radeon/radeon_texture.c     |  4 ++--
 src/mesa/main/copyimage.c                        |  6 +++---
 src/mesa/main/formatquery.c                      |  4 ++--
 src/mesa/main/formats.c                          |  4 +++-
 src/mesa/main/formats.h                          |  3 ++-
 src/mesa/main/texcompress.c                      |  8 ++++----
 src/mesa/main/texgetimage.c                      |  4 ++--
 src/mesa/main/teximage.c                         |  4 ++--
 src/mesa/main/texstore.c                         |  4 ++--
 src/mesa/swrast/s_texfetch.c                     |  4 ++--
 src/mesa/swrast/s_texture.c                      |  4 ++--
 18 files changed, 67 insertions(+), 56 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c
index 5cbf763..947a556 100644
--- a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c
@@ -90,8 +90,8 @@ intel_miptree_create_layout(struct intel_context *intel,
    /* The cpp is bytes per (1, blockheight)-sized block for compressed
     * textures.  This is why you'll see divides by blockheight all over
     */
-   unsigned bw, bh;
-   _mesa_get_format_block_size(format, &bw, &bh);
+   unsigned bw, bh, bd;
+   _mesa_get_format_block_size(format, &bw, &bh, &bd);
    assert(_mesa_get_format_bytes(mt->format) % bw == 0);
    mt->cpp = _mesa_get_format_bytes(mt->format) / bw;
 
@@ -726,7 +726,7 @@ intel_miptree_map_gtt(struct intel_context *intel,
 		      struct intel_miptree_map *map,
 		      unsigned int level, unsigned int slice)
 {
-   unsigned int bw, bh;
+   unsigned int bw, bh, bd;
    void *base;
    unsigned int image_x, image_y;
    int x = map->x;
@@ -736,7 +736,7 @@ intel_miptree_map_gtt(struct intel_context *intel,
     * row of blocks.  intel_miptree_get_image_offset() already does
     * the divide.
     */
-   _mesa_get_format_block_size(mt->format, &bw, &bh);
+   _mesa_get_format_block_size(mt->format, &bw, &bh, &bd);
    assert(y % bh == 0);
    y /= bh;
 
diff --git a/src/mesa/drivers/dri/i915/intel_tex_layout.c b/src/mesa/drivers/dri/i915/intel_tex_layout.c
index 01ea165..401282c 100644
--- a/src/mesa/drivers/dri/i915/intel_tex_layout.c
+++ b/src/mesa/drivers/dri/i915/intel_tex_layout.c
@@ -69,8 +69,8 @@ intel_horizontal_texture_alignment_unit(struct intel_context *intel,
        /* The hardware alignment requirements for compressed textures
         * happen to match the block boundaries.
         */
-      unsigned int i, j;
-      _mesa_get_format_block_size(format, &i, &j);
+      unsigned int i, j, k;
+      _mesa_get_format_block_size(format, &i, &j, &k);
       return i;
     }
 
diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index a294829..67923e9 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -296,9 +296,9 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
    unsigned width = mt->physical_width0;
    unsigned height = mt->physical_height0;
    unsigned depth = mt->physical_depth0; /* number of array layers. */
-   unsigned int bw, bh;
+   unsigned int bw, bh, bd;
 
-   _mesa_get_format_block_size(mt->format, &bw, &bh);
+   _mesa_get_format_block_size(mt->format, &bw, &bh, &bd);
 
    mt->total_width = mt->physical_width0;
 
@@ -515,9 +515,9 @@ brw_miptree_layout_texture_3d(struct brw_context *brw,
    mt->total_height = 0;
 
    unsigned ysum = 0;
-   unsigned bh, bw;
+   unsigned bh, bw, bd;
 
-   _mesa_get_format_block_size(mt->format, &bw, &bh);
+   _mesa_get_format_block_size(mt->format, &bw, &bh, &bd);
 
    for (unsigned level = mt->first_level; level <= mt->last_level; level++) {
       unsigned WL = MAX2(mt->physical_width0 >> level, 1);
@@ -745,10 +745,11 @@ intel_miptree_set_alignment(struct brw_context *brw,
          mt->valign = 32;
       }
    } else if (mt->compressed) {
-       /* The hardware alignment requirements for compressed textures
-        * happen to match the block boundaries.
-        */
-      _mesa_get_format_block_size(mt->format, &mt->halign, &mt->valign);
+      unsigned int bd;
+      /* The hardware alignment requirements for compressed textures
+       * happen to match the block boundaries.
+       */
+      _mesa_get_format_block_size(mt->format, &mt->halign, &mt->valign, &bd);
 
       /* On Gen9+ we can pick our own alignment for compressed textures but it
        * has to be a multiple of the block size. The minimum alignment we can
@@ -793,8 +794,8 @@ brw_miptree_layout(struct brw_context *brw,
     * size
     */
    if (brw->gen >= 9) {
-      unsigned int i, j;
-      _mesa_get_format_block_size(mt->format, &i, &j);
+      unsigned int i, j, k;
+      _mesa_get_format_block_size(mt->format, &i, &j, &k);
       mt->halign /= i;
       mt->valign /= j;
    }
diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c
index 08b7623..3690585 100644
--- a/src/mesa/drivers/dri/i965/intel_copy_image.c
+++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
@@ -41,7 +41,7 @@ copy_image_with_blitter(struct brw_context *brw,
                         int dst_x, int dst_y, int dst_z,
                         int src_width, int src_height)
 {
-   GLuint bw, bh;
+   GLuint bw, bh, bd;
    uint32_t src_image_x, src_image_y, dst_image_x, dst_image_y;
 
    /* The blitter doesn't understand multisampling at all. */
@@ -76,7 +76,7 @@ copy_image_with_blitter(struct brw_context *brw,
                                   &src_image_x, &src_image_y);
 
    if (_mesa_is_format_compressed(src_mt->format)) {
-      _mesa_get_format_block_size(src_mt->format, &bw, &bh);
+      _mesa_get_format_block_size(src_mt->format, &bw, &bh, &bd);
 
       assert(src_x % bw == 0);
       assert(src_y % bh == 0);
@@ -95,7 +95,7 @@ copy_image_with_blitter(struct brw_context *brw,
                                   &dst_image_x, &dst_image_y);
 
    if (_mesa_is_format_compressed(dst_mt->format)) {
-      _mesa_get_format_block_size(dst_mt->format, &bw, &bh);
+      _mesa_get_format_block_size(dst_mt->format, &bw, &bh, &bd);
 
       assert(dst_x % bw == 0);
       assert(dst_y % bh == 0);
@@ -134,10 +134,10 @@ copy_image_with_memcpy(struct brw_context *brw,
    void *mapped, *src_mapped, *dst_mapped;
    ptrdiff_t src_stride, dst_stride, cpp;
    int map_x1, map_y1, map_x2, map_y2;
-   GLuint src_bw, src_bh;
+   GLuint src_bw, src_bh, src_bd;
 
    cpp = _mesa_get_format_bytes(src_mt->format);
-   _mesa_get_format_block_size(src_mt->format, &src_bw, &src_bh);
+   _mesa_get_format_block_size(src_mt->format, &src_bw, &src_bh, &src_bd);
 
    assert(src_width % src_bw == 0);
    assert(src_height % src_bw == 0);
@@ -212,7 +212,7 @@ intel_copy_image_sub_data(struct gl_context *ctx,
    struct brw_context *brw = brw_context(ctx);
    struct intel_mipmap_tree *src_mt, *dst_mt;
    unsigned src_level, dst_level;
-   GLuint bw, bh;
+   GLuint bw, bh, bd;
 
    if (_mesa_meta_CopyImageSubData_uncompressed(ctx,
                                                 src_image, src_renderbuffer,
@@ -276,7 +276,7 @@ intel_copy_image_sub_data(struct gl_context *ctx,
    intel_miptree_all_slices_resolve_depth(brw, dst_mt);
    intel_miptree_resolve_color(brw, dst_mt, 0);
 
-   _mesa_get_format_block_size(src_mt->format, &bw, &bh);
+   _mesa_get_format_block_size(src_mt->format, &bw, &bh, &bd);
 
    /* It's legal to have a WxH that's smaller than a compressed block. This
     * happens for example when you are using a higher level LOD. For this case,
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 6c233d8..0874902 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -1373,8 +1373,8 @@ intel_miptree_copy_slice(struct brw_context *brw,
    assert(src_mt->format == dst_mt->format);
 
    if (dst_mt->compressed) {
-      unsigned int i, j;
-      _mesa_get_format_block_size(dst_mt->format, &i, &j);
+      unsigned int i, j, k;
+      _mesa_get_format_block_size(dst_mt->format, &i, &j, &k);
       height = ALIGN_NPOT(height, j) / j;
       width = ALIGN_NPOT(width, i) / i;
    }
@@ -2231,7 +2231,7 @@ intel_miptree_map_gtt(struct brw_context *brw,
 		      struct intel_miptree_map *map,
 		      unsigned int level, unsigned int slice)
 {
-   unsigned int bw, bh;
+   unsigned int bw, bh, bd;
    void *base;
    unsigned int image_x, image_y;
    intptr_t x = map->x;
@@ -2241,7 +2241,7 @@ intel_miptree_map_gtt(struct brw_context *brw,
     * row of blocks.  intel_miptree_get_image_offset() already does
     * the divide.
     */
-   _mesa_get_format_block_size(mt->format, &bw, &bh);
+   _mesa_get_format_block_size(mt->format, &bw, &bh, &bd);
    assert(y % bh == 0);
    assert(x % bw == 0);
    y /= bh;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_util.h b/src/mesa/drivers/dri/nouveau/nouveau_util.h
index 8087445..236b883 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_util.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_util.h
@@ -216,7 +216,9 @@ get_format_blocksx(mesa_format format,
 {
 	GLuint blockwidth;
 	GLuint blockheight;
-	_mesa_get_format_block_size(format, &blockwidth, &blockheight);
+	GLuint blockdepth;
+	_mesa_get_format_block_size(format, &blockwidth, &blockheight,
+				    &blockdepth);
 	return (x + blockwidth - 1) / blockwidth;
 }
 
@@ -226,7 +228,9 @@ get_format_blocksy(mesa_format format,
 {
 	GLuint blockwidth;
 	GLuint blockheight;
-	_mesa_get_format_block_size(format, &blockwidth, &blockheight);
+	GLuint blockdepth;
+	_mesa_get_format_block_size(format, &blockwidth, &blockheight,
+				    &blockdepth);
 	return (y + blockheight - 1) / blockheight;
 }
 
diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
index c71766d..d2bddb9 100644
--- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
+++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
@@ -44,10 +44,12 @@ static unsigned get_aligned_compressed_row_stride(
 		unsigned minStride)
 {
 	const unsigned blockBytes = _mesa_get_format_bytes(format);
-	unsigned blockWidth, blockHeight;
+	unsigned blockWidth, blockHeight, blockDepth;
 	unsigned stride;
 
-	_mesa_get_format_block_size(format, &blockWidth, &blockHeight);
+	_mesa_get_format_block_size(format, &blockwidth, &blockheight,
+				    &blockDepth);
+
 
 	/* Count number of blocks required to store the given width.
 	 * And then multiple it with bytes required to store a block.
@@ -78,9 +80,10 @@ unsigned get_texture_image_size(
 		unsigned tiling)
 {
 	if (_mesa_is_format_compressed(format)) {
-		unsigned blockWidth, blockHeight;
+		unsigned blockWidth, blockHeight, blockDepth;
 
-		_mesa_get_format_block_size(format, &blockWidth, &blockHeight);
+		_mesa_get_format_block_size(format, &blockWidth, &blockHeight
+					    &blockDepth);
 
 		return rowStride * ((height + blockHeight - 1) / blockHeight) * depth;
 	} else if (tiling) {
diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 4794dda..f9bb62f 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -158,10 +158,10 @@ radeon_map_texture_image(struct gl_context *ctx,
 	GLuint width = texImage->Width;
 	GLuint height = texImage->Height;
 	struct radeon_bo *bo = !image->mt ? image->bo : image->mt->bo;
-	unsigned int bw, bh;
+	unsigned int bw, bh, bd;
 	GLboolean write = (mode & GL_MAP_WRITE_BIT) != 0;
 
-	_mesa_get_format_block_size(texImage->TexFormat, &bw, &bh);
+	_mesa_get_format_block_size(texImage->TexFormat, &bw, &bh, &bd);
 	assert(y % bh == 0);
 	y /= bh;
 	texel_size /= bw;
diff --git a/src/mesa/main/copyimage.c b/src/mesa/main/copyimage.c
index d571d22..754eaf1 100644
--- a/src/mesa/main/copyimage.c
+++ b/src/mesa/main/copyimage.c
@@ -430,7 +430,7 @@ _mesa_CopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel,
    mesa_format srcFormat, dstFormat;
    GLenum srcIntFormat, dstIntFormat;
    GLuint src_w, src_h, dst_w, dst_h;
-   GLuint src_bw, src_bh, dst_bw, dst_bh;
+   GLuint src_bw, src_bh, src_bd, dst_bw, dst_bh, dst_bd;
    int dstWidth, dstHeight, dstDepth;
    int i;
 
@@ -460,7 +460,7 @@ _mesa_CopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel,
                        &dstIntFormat, &dst_w, &dst_h, "dst"))
       return;
 
-   _mesa_get_format_block_size(srcFormat, &src_bw, &src_bh);
+   _mesa_get_format_block_size(srcFormat, &src_bw, &src_bh, &src_bd);
 
    /* Section 18.3.2 (Copying Between Images) of the OpenGL 4.5 Core Profile
     * spec says:
@@ -492,7 +492,7 @@ _mesa_CopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel,
       return;
    }
 
-   _mesa_get_format_block_size(dstFormat, &dst_bw, &dst_bh);
+   _mesa_get_format_block_size(dstFormat, &dst_bw, &dst_bh, &dst_bd);
    if ((dstX % dst_bw != 0) || (dstY % dst_bh != 0)) {
       _mesa_error(ctx, GL_INVALID_VALUE,
                   "glCopyImageSubData(unaligned dst rectangle)");
diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c
index 215c14f..fd41319 100644
--- a/src/mesa/main/formatquery.c
+++ b/src/mesa/main/formatquery.c
@@ -1470,10 +1470,10 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
       if (pname == GL_TEXTURE_COMPRESSED_BLOCK_SIZE) {
          buffer[0] = block_size;
       } else {
-         GLuint bwidth, bheight;
+         GLuint bwidth, bheight, bdepth;
 
          /* Returns the width and height in pixels. We return bytes */
-         _mesa_get_format_block_size(mesaformat, &bwidth, &bheight);
+         _mesa_get_format_block_size(mesaformat, &bwidth, &bheight, &bdepth);
          assert(bwidth > 0 && bheight > 0);
 
          if (pname == GL_TEXTURE_COMPRESSED_BLOCK_WIDTH)
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 3d2349b..6c23dda 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -312,11 +312,13 @@ _mesa_get_format_base_format(uint32_t format)
  * \param bh  returns block height in pixels
  */
 void
-_mesa_get_format_block_size(mesa_format format, GLuint *bw, GLuint *bh)
+_mesa_get_format_block_size(mesa_format format, GLuint *bw, GLuint *bh,
+                            GLuint* bd)
 {
    const struct gl_format_info *info = _mesa_get_format_info(format);
    *bw = info->BlockWidth;
    *bh = info->BlockHeight;
+   *bd = info->BlockDepth;
 }
 
 
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 794d599..2f8f63c 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -661,7 +661,8 @@ extern GLenum
 _mesa_get_format_base_format(uint32_t format);
 
 extern void
-_mesa_get_format_block_size(mesa_format format, GLuint *bw, GLuint *bh);
+_mesa_get_format_block_size(mesa_format format, GLuint *bw,
+                            GLuint *bh, GLuint *bd);
 
 extern mesa_array_format
 _mesa_array_format_flip_channels(mesa_array_format format);
diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index 3ae6452..9f2f171 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -756,10 +756,10 @@ _mesa_compressed_image_address(GLint col, GLint row, GLint img,
 {
    /* XXX only 2D images implemented, not 3D */
    const GLuint blockSize = _mesa_get_format_bytes(mesaFormat);
-   GLuint bw, bh;
+   GLuint bw, bh, bd;
    GLint offset;
 
-   _mesa_get_format_block_size(mesaFormat, &bw, &bh);
+   _mesa_get_format_block_size(mesaFormat, &bw, &bh, &bd);
 
    assert(col % bw == 0);
    assert(row % bh == 0);
@@ -808,11 +808,11 @@ _mesa_decompress_image(mesa_format format, GLuint width, GLuint height,
 {
    compressed_fetch_func fetch;
    GLuint i, j;
-   GLuint bytes, bw, bh;
+   GLuint bytes, bw, bh, bd;
    GLint stride;
 
    bytes = _mesa_get_format_bytes(format);
-   _mesa_get_format_block_size(format, &bw, &bh);
+   _mesa_get_format_block_size(format, &bw, &bh, &bd);
 
    fetch = _mesa_get_compressed_fetch_func(format);
    if (!fetch) {
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index 06bc8f1..a414b2e 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -1037,8 +1037,8 @@ dimensions_error_check(struct gl_context *ctx,
 
    /* Extra checks for compressed textures */
    {
-      GLuint bw, bh;
-      _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh);
+      GLuint bw, bh, bd;
+      _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh, &bd);
       if (bw > 1 || bh > 1) {
          /* offset must be multiple of block size */
          if (xoffset % bw != 0) {
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 616a929..ba72353 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1112,7 +1112,7 @@ error_check_subtexture_dimensions(struct gl_context *ctx, GLuint dims,
                                   GLsizei subDepth, const char *func)
 {
    const GLenum target = destImage->TexObject->Target;
-   GLuint bw, bh;
+   GLuint bw, bh, bd;
 
    /* Check size */
    if (subWidth < 0) {
@@ -1185,7 +1185,7 @@ error_check_subtexture_dimensions(struct gl_context *ctx, GLuint dims,
     * compressed formats supported by Mesa allow sub-textures to be updated
     * along compressed block boundaries.
     */
-   _mesa_get_format_block_size(destImage->TexFormat, &bw, &bh);
+   _mesa_get_format_block_size(destImage->TexFormat, &bw, &bh, &bd);
 
    if (bw != 1 || bh != 1) {
       /* offset must be multiple of block size */
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index c33b109..02670d1 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -1267,9 +1267,9 @@ _mesa_compute_compressed_pixelstore(GLuint dims, mesa_format texFormat,
                                     const struct gl_pixelstore_attrib *packing,
                                     struct compressed_pixelstore *store)
 {
-   GLuint bw, bh;
+   GLuint bw, bh, bd;
 
-   _mesa_get_format_block_size(texFormat, &bw, &bh);
+   _mesa_get_format_block_size(texFormat, &bw, &bh, &bd);
 
    store->SkipBytes = 0;
    store->TotalBytesPerRow = store->CopyBytesPerRow =
diff --git a/src/mesa/swrast/s_texfetch.c b/src/mesa/swrast/s_texfetch.c
index 27de9b3..4a9ec2c 100644
--- a/src/mesa/swrast/s_texfetch.c
+++ b/src/mesa/swrast/s_texfetch.c
@@ -71,9 +71,9 @@ fetch_compressed(const struct swrast_texture_image *swImage,
    /* The FetchCompressedTexel function takes an integer pixel rowstride,
     * while the image's rowstride is bytes per row of blocks.
     */
-   GLuint bw, bh;
+   GLuint bw, bh, bd;
    GLuint texelBytes = _mesa_get_format_bytes(swImage->Base.TexFormat);
-   _mesa_get_format_block_size(swImage->Base.TexFormat, &bw, &bh);
+   _mesa_get_format_block_size(swImage->Base.TexFormat, &bw, &bh, &bd);
    assert(swImage->RowStride * bw % texelBytes == 0);
 
    swImage->FetchCompressedTexel(swImage->ImageSlices[k],
diff --git a/src/mesa/swrast/s_texture.c b/src/mesa/swrast/s_texture.c
index 9ccd0e3..d7f0b35 100644
--- a/src/mesa/swrast/s_texture.c
+++ b/src/mesa/swrast/s_texture.c
@@ -214,7 +214,7 @@ _swrast_map_teximage(struct gl_context *ctx,
    struct swrast_texture_image *swImage = swrast_texture_image(texImage);
    GLubyte *map;
    GLint stride, texelSize;
-   GLuint bw, bh;
+   GLuint bw, bh, bd;
 
    check_map_teximage(texImage, slice, x, y, w, h);
 
@@ -229,7 +229,7 @@ _swrast_map_teximage(struct gl_context *ctx,
 
    texelSize = _mesa_get_format_bytes(texImage->TexFormat);
    stride = _mesa_format_row_stride(texImage->TexFormat, texImage->Width);
-   _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh);
+   _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh, &bd);
 
    assert(x % bw == 0);
    assert(y % bh == 0);
-- 
2.5.0



More information about the mesa-dev mailing list