/* * Copyright 2022 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_graphite_MtlComputePipeline_DEFINED #define skgpu_graphite_MtlComputePipeline_DEFINED #include "include/core/SkRefCnt.h" #include "include/ports/SkCFObject.h" #include "src/gpu/graphite/ComputePipeline.h" #import namespace skgpu::graphite { class ComputePipelineDesc; class ResourceProvider; class MtlSharedContext; class MtlComputePipeline final : public ComputePipeline { public: static sk_sp Make(const MtlSharedContext*, const ComputePipelineDesc&); ~MtlComputePipeline() override = default; id mtlPipelineState() const { return fPipelineState.get(); } private: MtlComputePipeline(const SharedContext* sharedContext, sk_cfp> pso) : ComputePipeline(sharedContext) , fPipelineState(std::move(pso)) {} void freeGpuData() override; sk_cfp> fPipelineState; }; } // namespace skgpu::graphite #endif // skgpu_graphite_MtlComputePipeline_DEFINED