@class MPSExternalCNNBinary; @protocol MPSNNPadding, MPSImageAllocator; @interface MPSCNNBinaryKernel : MPSKernel { MPSExternalCNNBinary *_plugin; BOOL _pluginSupportsBatchEncode; BOOL _supportsBroadcasting; int _checkFlags; void /* function */ *_encode; void /* function */ *_batchEncode; void *_encodeData; unsigned long long _pluginOptions; } @property (nonatomic) struct { long long x; long long y; long long z; } primaryOffset; @property (nonatomic) struct { long long x; long long y; long long z; } secondaryOffset; @property (nonatomic) struct { struct { unsigned long long x; unsigned long long y; unsigned long long z; } origin; struct { unsigned long long width; unsigned long long height; unsigned long long depth; } size; } clipRect; @property (nonatomic) unsigned long long destinationFeatureChannelOffset; @property (nonatomic) unsigned long long primarySourceFeatureChannelOffset; @property (nonatomic) unsigned long long secondarySourceFeatureChannelOffset; @property (nonatomic) unsigned long long primarySourceFeatureChannelMaxCount; @property (nonatomic) unsigned long long secondarySourceFeatureChannelMaxCount; @property (nonatomic) unsigned long long primaryEdgeMode; @property (nonatomic) unsigned long long secondaryEdgeMode; @property (readonly, nonatomic) unsigned long long primaryKernelWidth; @property (readonly, nonatomic) unsigned long long primaryKernelHeight; @property (readonly, nonatomic) unsigned long long secondaryKernelWidth; @property (readonly, nonatomic) unsigned long long secondaryKernelHeight; @property (nonatomic) unsigned long long primaryStrideInPixelsX; @property (nonatomic) unsigned long long primaryStrideInPixelsY; @property (nonatomic) unsigned long long secondaryStrideInPixelsX; @property (nonatomic) unsigned long long secondaryStrideInPixelsY; @property (readonly, nonatomic) unsigned long long primaryDilationRateX; @property (readonly, nonatomic) unsigned long long primaryDilationRateY; @property (readonly, nonatomic) unsigned long long secondaryDilationRateX; @property (readonly, nonatomic) unsigned long long secondaryDilationRateY; @property (readonly, nonatomic) BOOL isBackwards; @property (readonly, nonatomic) BOOL isStateModified; @property (retain, nonatomic) id padding; @property (retain, nonatomic) id destinationImageAllocator; - (BOOL)isResultStateReusedAcrossBatch; - (unsigned long long)maxBatchSize; - (id)init; - (id)copyWithZone:(struct _NSZone { } *)a0 device:(id)a1; - (id)initWithCoder:(id)a0 device:(id)a1; - (void)dealloc; - (void)encodeWithCoder:(id)a0; - (id)initWithDevice:(id)a0; - (id)debugDescription; - (BOOL)appendBatchBarrier; - (id)plugin; - (BOOL)setPlugin:(id)a0; - (void)encodeBatchToCommandBuffer:(id)a0 primaryImages:(id)a1 secondaryImages:(id)a2 destinationImages:(id)a3; - (void)encodeToCommandBuffer:(id)a0 primaryImage:(id)a1 secondaryImage:(id)a2 destinationImage:(id)a3; - (void)encodeToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImage:(id)a2 secondaryImage:(id)a3 destinationImage:(id)a4; - (struct MPSRegion { struct MPSOrigin { double x0; double x1; double x2; } x0; struct MPSSize { double x0; double x1; double x2; } x1; })primarySourceRegionForDestinationSize:(struct { unsigned long long x0; unsigned long long x1; unsigned long long x2; })a0; - (struct MPSRegion { struct MPSOrigin { double x0; double x1; double x2; } x0; struct MPSSize { double x0; double x1; double x2; } x1; })secondarySourceRegionForDestinationSize:(struct { unsigned long long x0; unsigned long long x1; unsigned long long x2; })a0; - (unsigned long long)batchEncodingStorageSizeForPrimaryImage:(id)a0 secondaryImage:(id)a1 sourceStates:(id)a2 destinationImage:(id)a3; - (void)copyToBinaryGradientState:(id)a0 primaryImage:(id)a1 secondaryImage:(id)a2 sourceStates:(id)a3 destinationImage:(id)a4; - (id)destinationImageDescriptorForSourceImages:(id)a0 sourceStates:(id)a1; - (id)destinationImageDescriptorForSourceImages:(id)a0 sourceStates:(id)a1 paddingMethod:(unsigned long long)a2 primaryOffset:(struct { long long x0; long long x1; long long x2; } *)a3 secondaryOffset:(struct { long long x0; long long x1; long long x2; } *)a4 kernelOffset:(struct { long long x0; long long x1; long long x2; } *)a5; - (id)encodeBatchToCommandBuffer:(id)a0 primaryImages:(id)a1 secondaryImages:(id)a2; - (id)encodeBatchToCommandBuffer:(id)a0 primaryImages:(id)a1 secondaryImages:(id)a2 destinationStates:(id *)a3 destinationStateIsTemporary:(BOOL)a4; - (id)encodeBatchToCommandBuffer:(id)a0 primaryImages:(id)a1 secondaryImages:(id)a2 inStates:(id)a3; - (void)encodeBatchToCommandBuffer:(id)a0 primaryImages:(id)a1 secondaryImages:(id)a2 inStates:(id)a3 destinationImages:(id)a4; - (id)encodeBatchToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImages:(id)a2 secondaryImages:(id)a3; - (void)encodeBatchToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImages:(id)a2 secondaryImages:(id)a3 destinationImages:(id)a4; - (id)encodeBatchToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImages:(id)a2 secondaryImages:(id)a3 destinationStates:(id *)a4 destinationStateIsTemporary:(BOOL)a5; - (id)encodeBatchToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImages:(id)a2 secondaryImages:(id)a3 inStates:(id)a4; - (void)encodeBatchToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImages:(id)a2 secondaryImages:(id)a3 inStates:(id)a4 destinationImages:(id)a5; - (void)encodeInternalBatchToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImages:(id)a2 secondaryImages:(id)a3 inStates:(id)a4 destinationImages:(id)a5 clipRect:(struct { struct { unsigned long long x0; unsigned long long x1; unsigned long long x2; } x0; struct { unsigned long long x0; unsigned long long x1; unsigned long long x2; } x1; })a6; - (void)encodeInternalToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImage:(id)a2 secondaryImage:(id)a3 inState:(id)a4 destinationImage:(id)a5 subBatchIndex:(unsigned long long)a6 batchSize:(unsigned long long)a7 clipRect:(struct { struct { unsigned long long x0; unsigned long long x1; unsigned long long x2; } x0; struct { unsigned long long x0; unsigned long long x1; unsigned long long x2; } x1; })a8; - (id)encodeToCommandBuffer:(id)a0 primaryImage:(id)a1 secondaryImage:(id)a2; - (id)encodeToCommandBuffer:(id)a0 primaryImage:(id)a1 secondaryImage:(id)a2 destinationState:(id *)a3 destinationStateIsTemporary:(BOOL)a4; - (void)encodeToCommandBuffer:(id)a0 primaryImage:(id)a1 secondaryImage:(id)a2 inState:(id)a3 destinationImage:(id)a4; - (id)encodeToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImage:(id)a2 secondaryImage:(id)a3; - (id)encodeToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImage:(id)a2 secondaryImage:(id)a3 destinationState:(id *)a4 destinationStateIsTemporary:(BOOL)a5; - (id)encodeToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImage:(id)a2 secondaryImage:(id)a3 inState:(id)a4; - (void)encodeToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImage:(id)a2 secondaryImage:(id)a3 inState:(id)a4 destinationImage:(id)a5; - (void)encodeToCommandEncoder:(id)a0 commandBuffer:(id)a1 primaryImage:(id)a2 secondaryImage:(id)a3 inState:(id)a4 destinationImage:(id)a5 subBatchIndex:(unsigned long long)a6 batchSize:(unsigned long long)a7; - (unsigned long long)encodingStorageSizeForPrimaryImage:(id)a0 secondaryImage:(id)a1 sourceStates:(id)a2 destinationImage:(id)a3; - (BOOL)filterHandlesPlugin; - (id)resultStateBatchForPrimaryImage:(id)a0 secondaryImage:(id)a1 sourceStates:(id)a2 destinationImage:(id)a3; - (id)resultStateForPrimaryImage:(id)a0 secondaryImage:(id)a1 sourceStates:(id)a2 destinationImage:(id)a3; - (id)temporaryResultStateBatchForCommandBuffer:(id)a0 primaryImage:(id)a1 secondaryImage:(id)a2 sourceStates:(id)a3 destinationImage:(id)a4; - (id)temporaryResultStateForCommandBuffer:(id)a0 primaryImage:(id)a1 secondaryImage:(id)a2 sourceStates:(id)a3 destinationImage:(id)a4; @end