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#include "experimental/graphite/src/mtl/MtlResourceProvider.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "experimental/graphite/src/mtl/MtlBuffer.h" 11cb93a386Sopenharmony_ci#include "experimental/graphite/src/mtl/MtlCommandBuffer.h" 12cb93a386Sopenharmony_ci#include "experimental/graphite/src/mtl/MtlGpu.h" 13cb93a386Sopenharmony_ci#include "experimental/graphite/src/mtl/MtlTexture.h" 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci#include "experimental/graphite/src/GraphicsPipelineDesc.h" 16cb93a386Sopenharmony_ci#include "experimental/graphite/src/mtl/MtlGraphicsPipeline.h" 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_cinamespace skgpu::mtl { 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ciResourceProvider::ResourceProvider(const skgpu::Gpu* gpu) 21cb93a386Sopenharmony_ci : skgpu::ResourceProvider(gpu) { 22cb93a386Sopenharmony_ci} 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ciconst Gpu* ResourceProvider::mtlGpu() { 25cb93a386Sopenharmony_ci return static_cast<const Gpu*>(fGpu); 26cb93a386Sopenharmony_ci} 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_cisk_sp<skgpu::CommandBuffer> ResourceProvider::createCommandBuffer() { 29cb93a386Sopenharmony_ci return CommandBuffer::Make(this->mtlGpu()); 30cb93a386Sopenharmony_ci} 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_cisk_sp<skgpu::GraphicsPipeline> ResourceProvider::onCreateGraphicsPipeline( 33cb93a386Sopenharmony_ci const GraphicsPipelineDesc& desc) { 34cb93a386Sopenharmony_ci return GraphicsPipeline::Make(this->mtlGpu(), desc); 35cb93a386Sopenharmony_ci} 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_cisk_sp<skgpu::Texture> ResourceProvider::createTexture(SkISize dimensions, 38cb93a386Sopenharmony_ci const skgpu::TextureInfo& info) { 39cb93a386Sopenharmony_ci return Texture::Make(this->mtlGpu(), dimensions, info); 40cb93a386Sopenharmony_ci} 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_cisk_sp<skgpu::Buffer> ResourceProvider::createBuffer(size_t size, 43cb93a386Sopenharmony_ci BufferType type, 44cb93a386Sopenharmony_ci PrioritizeGpuReads prioritizeGpuReads) { 45cb93a386Sopenharmony_ci return Buffer::Make(this->mtlGpu(), size, type, prioritizeGpuReads); 46cb93a386Sopenharmony_ci} 47cb93a386Sopenharmony_ci 48cb93a386Sopenharmony_ci} // namespace skgpu::mtl 49