[Mesa-dev] [PATCH 06/14] swr: fix texture layout for compressed formats
Ilia Mirkin
imirkin at alum.mit.edu
Sat Nov 12 23:00:31 UTC 2016
Fixes the texsubimage piglit and lets the copyteximage one get further.
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
src/gallium/drivers/swr/swr_context.cpp | 5 +++--
src/gallium/drivers/swr/swr_screen.cpp | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/gallium/drivers/swr/swr_context.cpp b/src/gallium/drivers/swr/swr_context.cpp
index cbc60e0..6bc6de4 100644
--- a/src/gallium/drivers/swr/swr_context.cpp
+++ b/src/gallium/drivers/swr/swr_context.cpp
@@ -157,8 +157,9 @@ swr_transfer_map(struct pipe_context *pipe,
}
}
- unsigned offset = box->z * pt->layer_stride + box->y * pt->stride
- + box->x * util_format_get_blocksize(format);
+ unsigned offset = box->z * pt->layer_stride +
+ util_format_get_nblocksy(format, box->y) * pt->stride +
+ util_format_get_stride(format, box->x);
*transfer = pt;
diff --git a/src/gallium/drivers/swr/swr_screen.cpp b/src/gallium/drivers/swr/swr_screen.cpp
index fa16edd..16a8bcf 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -796,8 +796,9 @@ swr_texture_layout(struct swr_screen *screen,
res->alignedHeight = alignedHeight;
}
- res->row_stride[level] = alignedWidth * finfo.Bpp;
- res->img_stride[level] = res->row_stride[level] * alignedHeight;
+ res->row_stride[level] = util_format_get_stride(fmt, alignedWidth);
+ res->img_stride[level] =
+ res->row_stride[level] * util_format_get_nblocksy(fmt, alignedHeight);
res->mip_offsets[level] = total_size;
if (pt->target == PIPE_TEXTURE_3D)
--
2.7.3
More information about the mesa-dev
mailing list