                 continue
             }
             
-            var finalTexture:MTLTexture = mainItemTexture
             let mainTextureWidth:Int = mainItemTexture.width
             let mainTextureHeight:Int = mainItemTexture.height
             let mainTexturePixelFormat:MTLPixelFormat = mainItemTexture.pixelFormat
+            var finalTexture:MTLTexture = newCanvasTexure(
+                pixelFormat:mainTexturePixelFormat,
+                width:mainTextureWidth,
+                height:mainTextureHeight)
+            
+            let finalTextureBuffer:MTLCommandBuffer = commandQueue.makeCommandBuffer()
+            let size:MTLSize = MTLSizeMake(
+                mainTextureWidth,
+                mainTextureHeight,
+                kTextureDepth)
+            let blitEncoder:MTLBlitCommandEncoder = finalTextureBuffer.makeBlitCommandEncoder()
+            
+            blitEncoder.copy(
+                from:mainItemTexture,
+                sourceSlice:0,
+                sourceLevel:0,
+                sourceOrigin:textureOrigin,
+                sourceSize:size,
+                to:finalTexture,
+                destinationSlice:0,
+                destinationLevel:0,
+                destinationOrigin:textureOrigin)
+            blitEncoder.endEncoding()
+            
+//            commandBuffer.commit()
+//            commandBuffer.waitUntilCompleted()
             
             for sequence:MHomeImageSequenceRaw in sequences
             {

        main:MHomeImageSequenceRaw,
        sequences:[MHomeImageSequenceRaw])
    {
        let countMainItems:Int = main.items.count
        
        for indexMainItem:Int in 0 ..< countMainItems

class MHomeImageSequenceGenerated:MHomeImageSequence
{
    private weak var device:MTLDevice!
    private weak var commandQueue:MTLCommandQueue!
    private weak var textureLoader:MTKTextureLoader!
    private let kTextureMipMapped:Bool = false
    private let kTextureDepth:Int = 1
    
    //MARK: private
    
