[Mesa-dev] [PATCH 09/15] i965: Prepare slice copy for isl based miptrees
Topi Pohjolainen
topi.pohjolainen at gmail.com
Tue Jun 13 14:50:07 UTC 2017
Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 28 +++++++++++++++++++++------
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index f44bac988f..c81d345fbc 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -1294,7 +1294,8 @@ intel_miptree_copy_slice_sw(struct brw_context *brw,
{
void *src, *dst;
ptrdiff_t src_stride, dst_stride;
- int cpp = dst_mt->cpp;
+ const unsigned cpp = dst_mt->surf.size > 0 ?
+ (isl_format_get_layout(dst_mt->surf.format)->bpb / 8) : dst_mt->cpp;
intel_miptree_map(brw, src_mt,
src_level, src_layer,
@@ -1355,13 +1356,28 @@ intel_miptree_copy_slice(struct brw_context *brw,
unsigned dst_level, unsigned dst_layer)
{
- uint32_t width = minify(src_mt->physical_width0,
- src_level - src_mt->first_level);
- uint32_t height = minify(src_mt->physical_height0,
- src_level - src_mt->first_level);
mesa_format format = src_mt->format;
+ uint32_t width, height;
+
+ if (src_mt->surf.size > 0) {
+ width = minify(src_mt->surf.phys_level0_sa.width,
+ src_level - src_mt->first_level);
+ height = minify(src_mt->surf.phys_level0_sa.height,
+ src_level - src_mt->first_level);
+
+ const unsigned level_depth = src_mt->surf.dim == ISL_SURF_DIM_3D ?
+ minify(src_mt->surf.phys_level0_sa.depth,
+ src_level - src_mt->first_level) :
+ src_mt->surf.phys_level0_sa.array_len;
+ assert(src_layer < level_depth);
+ } else {
+ width = minify(src_mt->physical_width0,
+ src_level - src_mt->first_level);
+ height = minify(src_mt->physical_height0,
+ src_level - src_mt->first_level);
+ assert(src_layer < src_mt->level[src_level].depth);
+ }
- assert(src_layer < src_mt->level[src_level].depth);
assert(src_mt->format == dst_mt->format);
if (dst_mt->compressed) {
--
2.11.0
More information about the mesa-dev
mailing list