1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2021 Google LLC 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef skgpu_MtlResourceProvider_DEFINED 9cb93a386Sopenharmony_ci#define skgpu_MtlResourceProvider_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "experimental/graphite/src/ResourceProvider.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci#import <Metal/Metal.h> 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_cinamespace skgpu { 16cb93a386Sopenharmony_ciclass CommandBuffer; 17cb93a386Sopenharmony_ci} 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_cinamespace skgpu::mtl { 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ciclass Gpu; 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ciclass ResourceProvider final : public skgpu::ResourceProvider { 24cb93a386Sopenharmony_cipublic: 25cb93a386Sopenharmony_ci ResourceProvider(const skgpu::Gpu* gpu); 26cb93a386Sopenharmony_ci ~ResourceProvider() override {} 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_ciprivate: 29cb93a386Sopenharmony_ci const Gpu* mtlGpu(); 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci sk_sp<skgpu::CommandBuffer> createCommandBuffer() override; 32cb93a386Sopenharmony_ci sk_sp<skgpu::GraphicsPipeline> onCreateGraphicsPipeline(const GraphicsPipelineDesc&) override; 33cb93a386Sopenharmony_ci sk_sp<skgpu::Texture> createTexture(SkISize, const skgpu::TextureInfo&) override; 34cb93a386Sopenharmony_ci sk_sp<skgpu::Buffer> createBuffer(size_t size, BufferType type, PrioritizeGpuReads) override; 35cb93a386Sopenharmony_ci}; 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_ci} // namespace skgpu::mtl 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci#endif // skgpu_MtlResourceProvider_DEFINED 40