From c51702bdc81b65396a7945d2cb30e0576e4aa59a Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 19 May 2016 20:50:06 -0700 Subject: [PATCH] i965: Also copy stencil miptree data. The Meta path handles this, but the CPU/BLT fallbacks did not. Signed-off-by: Kenneth Graunke Reviewed-by: Anuj Phogat Reviewed-by: Chris Forbes --- src/mesa/drivers/dri/i965/intel_copy_image.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c index d1145348d65..ead5b0d830c 100644 --- a/src/mesa/drivers/dri/i965/intel_copy_image.c +++ b/src/mesa/drivers/dri/i965/intel_copy_image.c @@ -314,6 +314,21 @@ intel_copy_image_sub_data(struct gl_context *ctx, copy_miptrees(brw, src_mt, src_x, src_y, src_z, src_level, dst_mt, dst_x, dst_y, dst_z, dst_level, src_width, src_height); + + /* CopyImage only works for equal formats, texture view equivalence + * classes, and a couple special cases for compressed textures. + * + * Notably, GL_DEPTH_STENCIL does not appear in any equivalence + * classes, so we know the formats must be the same, and thus both + * will either have stencil, or not. They can't be mismatched. + */ + assert((src_mt->stencil_mt != NULL) == (dst_mt->stencil_mt != NULL)); + + if (dst_mt->stencil_mt) { + copy_miptrees(brw, src_mt->stencil_mt, src_x, src_y, src_z, src_level, + dst_mt->stencil_mt, dst_x, dst_y, dst_z, dst_level, + src_width, src_height); + } } void -- 2.30.2