1 #import <Foundation/Foundation.h> 2 #import <Metal/Metal.h> 3 #import <MetalPerformanceShaders/MetalPerformanceShaders.h> 4 #include <string> 5 6 API_AVAILABLE(ios(11.0), macos(10.13)) 7 @interface MetalContext : NSObject 8 @property(nonatomic, strong, readonly) id<MTLDevice> device; 9 @property(nonatomic, strong, readonly) id<MTLCommandQueue> commandQueue; 10 @property(nonatomic, strong, readonly) id<MTLLibrary> library; 11 12 + (instancetype)sharedInstance; 13 - (BOOL)available; 14 - (id<MTLComputePipelineState>)pipelineState:(const std::string&)kernel; 15 - (id<MTLComputePipelineState>)specializedPipelineState:(const std::string&)kernel 16 Constants:(NSArray<NSNumber*>*) 17 constants; 18 - (id<MTLBuffer>)emptyMTLBuffer:(int64_t) size; 19 20 @end 21