diff --git a/src/framebuffer.cpp b/src/framebuffer.cpp index beffe58..39150aa 100644 --- a/src/framebuffer.cpp +++ b/src/framebuffer.cpp @@ -574,6 +574,13 @@ void CommandBuffer::performResolve( if (srcState.texture == nullptr || dstState.texture == nullptr) { return; } + if (srcState.texture->width() != dstState.texture->width() || + srcState.texture->height() != dstState.texture->height() || + srcState.texture->depth() != dstState.texture->depth() || + srcState.texture->arrayLength() != + dstState.texture->arrayLength()) { + return; + } MTL::RenderPassDescriptor *descriptor = MTL::RenderPassDescriptor::renderPassDescriptor(); @@ -597,6 +604,17 @@ void CommandBuffer::performResolve( if (srcState.texture == nullptr || dstState.texture == nullptr) { return; } + if (srcState.texture->width() != dstState.texture->width() || + srcState.texture->height() != dstState.texture->height() || + srcState.texture->depth() != dstState.texture->depth() || + srcState.texture->arrayLength() != + dstState.texture->arrayLength() || + srcState.texture->mipmapLevelCount() != + dstState.texture->mipmapLevelCount() || + srcState.texture->pixelFormat() != + dstState.texture->pixelFormat()) { + return; + } MTL::BlitCommandEncoder *blit = metalCB->blitCommandEncoder(); blit->copyFromTexture(srcState.texture, dstState.texture); blit->endEncoding();