intel: fix clears with mipLevels > 1
meta->dst.layer should be reset to range->baseArraySlice for each mip level.
Otherwise, we may render out-of-bound and cause screen corruptions.
diff --git a/icd/intel/cmd_meta.c b/icd/intel/cmd_meta.c
index 5d3114d..53215fe 100644
--- a/icd/intel/cmd_meta.c
+++ b/icd/intel/cmd_meta.c
@@ -700,10 +700,10 @@
if (array_size > range->arraySize)
array_size = range->arraySize;
- meta->dst.lod = range->baseMipLevel;
- meta->dst.layer = range->baseArraySlice;
-
for (i = 0; i < mip_levels; i++) {
+ meta->dst.lod = range->baseMipLevel + i;
+ meta->dst.layer = range->baseArraySlice;
+
meta->width = u_minify(img->layout.width0, meta->dst.lod);
meta->height = u_minify(img->layout.height0, meta->dst.lod);
@@ -727,8 +727,6 @@
meta->dst.layer++;
}
-
- meta->dst.lod++;
}
}