MTLArgumentEncoder的初始化

时间:2019-06-10 09:24:29

标签: macos gpu metal

因此,我正在制作一个金属计算应用程序。根据Metal的良好做法,MTLComputePipelineState应该在程序开始时进行初始化,因为它很昂贵。要制作一个MTLComputePipelineState,我必须使用MTLFunction这是我的内核功能。像这样:

id<MTLFunction> myKernel = [_defaultLibrary newFunctionWithName:@"myKernel"];
_myPipelineState = [_device newComputePipelineStateWithFunction:myKernel error:&error];

在这些内核中,我使用MTLArgumentEncoders将值编码到我的参数缓冲区中,该参数缓冲区也使用内核函数。 像这样:

id<MTLArgumentEncoder> argInEncoder =
[myFunction newArgumentEncoderWithBufferIndex:ComputeBufferIn1];

这只是一个随机的问题,因为我正在缓存MTLComputePipelineStates,如果它们对性能有影响,是否也应该缓存我的MTLArgumentEncoder

谢谢

0 个答案:

没有答案