     private var _controller:UIViewController! = nil
     
     lazy private var _device = MTLCreateSystemDefaultDevice()
-    private var _vertexBuffers = [UIInterfaceOrientation : (MTLBuffer,Int)]()
-
-    private var _passthroughBuffer:(MTLBuffer,Int)! = nil
+    lazy private var _vertexStart = [UIInterfaceOrientation : Int]()
+
+    private var _vertexBuffer:MTLBuffer! = nil
     private var _filterArgs:MetalBufferArray<FilterBuffer>! = nil
     private var _colorArgs:MetalBufferArray<ColorBuffer>! = nil
     private var _blurArgs:MetalBufferArray<BlurBuffer>? = nil

            for (i, filter) in enumerate(_currentVideoFilter) {
                createRenderPass(commandBuffer,
                    pipeline: filter,
                    vertexBuffers: passthroughParameters,
                    fragmentBuffers: filterParameters,
                    sourceTextures: [sourceTexture, blurTex, _rgbTexture],
                    descriptor: destDescriptor,

        _textureCache = _unmanagedTextureCache!.takeUnretainedValue()
        
        // set up the full screen quads
        let data:[Float] =
        [   // landscape right & passthrough
            -1.0,  -1.0,  0.0, 1.0,
            1.0,  -1.0,  1.0, 1.0,
            -1.0,   1.0,  0.0, 0.0,
            1.0,  -1.0,  1.0, 1.0,
            -1.0,   1.0,  0.0, 0.0,
            1.0,   1.0,  1.0, 0.0,
            // landscape left
            -1.0,  -1.0,  1.0, 0.0,
            1.0,  -1.0,  0.0, 0.0,
            -1.0,   1.0,  1.0, 1.0,
            1.0,  -1.0,  0.0, 0.0,
            -1.0,   1.0,  1.0, 1.0,
            1.0,   1.0,  0.0, 1.0,
            // portrait
            -1.0,  -1.0,  1.0, 1.0,
            1.0,  -1.0,  1.0, 0.0,
            -1.0,   1.0,  0.0, 1.0,
            1.0,  -1.0,  1.0, 0.0,
            -1.0,   1.0,  0.0, 1.0,
            1.0,   1.0,  0.0, 0.0,
            // portrait upside down
            -1.0,  -1.0,  0.0, 0.0,
            1.0,  -1.0,  0.0, 1.0,
            -1.0,   1.0,  1.0, 0.0,
            1.0,  -1.0,  0.0, 1.0,
