/* * Copyright 2018 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "GrMtlCopyPipelineState.h" #include "GrMtlGpu.h" GrMtlCopyPipelineState* GrMtlCopyPipelineState::CreateCopyPipelineState( GrMtlGpu* gpu, MTLPixelFormat dstPixelFormat, id<MTLFunction> vertexFunction, id<MTLFunction> fragmentFunction, MTLVertexDescriptor* vertexDescriptor) { // Create pipeline state for copy as draw MTLRenderPipelineDescriptor* pipelineDescriptor = [[MTLRenderPipelineDescriptor alloc] init]; pipelineDescriptor.vertexFunction = vertexFunction; pipelineDescriptor.fragmentFunction = fragmentFunction; pipelineDescriptor.vertexDescriptor = vertexDescriptor; pipelineDescriptor.colorAttachments[0].pixelFormat = dstPixelFormat; NSError* error = nil; id<MTLRenderPipelineState> pipelineState = [gpu->device() newRenderPipelineStateWithDescriptor: pipelineDescriptor error: &error]; if (error) { SkDebugf("Error creating pipeline: %s\n", [[error localizedDescription] cStringUsingEncoding: NSASCIIStringEncoding]); return nil; } SkASSERT(pipelineState); return new GrMtlCopyPipelineState(pipelineState, dstPixelFormat); }