/* * Copyright 2021 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_MtlResourceProvider_DEFINED #define skgpu_graphite_MtlResourceProvider_DEFINED #include "src/core/SkTHash.h" #include "src/gpu/graphite/DrawTypes.h" #include "src/gpu/graphite/ResourceProvider.h" #include "src/gpu/graphite/mtl/MtlGraphicsPipeline.h" #import namespace skgpu::graphite { class CommandBuffer; class MtlSharedContext; class MtlResourceProvider final : public ResourceProvider { public: MtlResourceProvider(SharedContext* sharedContext, SingleOwner*, uint32_t recorderID, size_t resourceBudget); ~MtlResourceProvider() override {} sk_sp findOrCreateLoadMSAAPipeline(const RenderPassDesc&); sk_cfp> findOrCreateCompatibleDepthStencilState( const DepthStencilSettings&); private: const MtlSharedContext* mtlSharedContext(); sk_sp createGraphicsPipeline(const RuntimeEffectDictionary*, const GraphicsPipelineDesc&, const RenderPassDesc&, SkEnumBitMask) override; sk_sp createComputePipeline(const ComputePipelineDesc&) override; sk_sp createTexture(SkISize, const TextureInfo&, skgpu::Budgeted) override; sk_sp onCreateWrappedTexture(const BackendTexture&) override; sk_sp createBuffer(size_t size, BufferType type, AccessPattern) override; sk_sp createSampler(const SamplerDesc&) override; BackendTexture onCreateBackendTexture(SkISize dimensions, const TextureInfo&) override; void onDeleteBackendTexture(const BackendTexture&) override; skia_private::THashMap>> fDepthStencilStates; skia_private::THashMap> fLoadMSAAPipelines; }; } // namespace skgpu::graphite #endif // skgpu_graphite_MtlResourceProvider_DEFINED