| /* | |
| * 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_MtlMemoryAllocatorImpl_DEFINED | |
| #define skgpu_MtlMemoryAllocatorImpl_DEFINED | |
| #include "include/core/SkRefCnt.h" | |
| #include "include/gpu/mtl/MtlMemoryAllocator.h" | |
| #import <Metal/Metal.h> | |
| namespace skgpu { | |
| class MtlMemoryAllocatorImpl : public MtlMemoryAllocator { | |
| public: | |
| static sk_sp<MtlMemoryAllocator> Make(id<MTLDevice>); | |
| ~MtlMemoryAllocatorImpl() override {} | |
| id<MTLBuffer> newBufferWithLength(NSUInteger length, MTLResourceOptions options, | |
| sk_sp<skgpu::MtlAlloc>* allocation) override; | |
| id<MTLTexture> newTextureWithDescriptor(MTLTextureDescriptor* texDesc, | |
| sk_sp<skgpu::MtlAlloc>* allocation) override; | |
| class Alloc : public MtlAlloc { | |
| public: | |
| Alloc() {} | |
| ~Alloc() override { | |
| // TODO: free allocation | |
| } | |
| private: | |
| friend class MtlMemoryAllocatorImpl; | |
| // TODO: allocation data goes here | |
| }; | |
| private: | |
| MtlMemoryAllocatorImpl(id<MTLDevice> device) : fDevice(device) {} | |
| id<MTLDevice> fDevice; | |
| }; | |
| } // namespace skgpu | |
| #endif // skgpu_MtlMemoryAllocatorImpl_DEFINED |