Инициализация MTLArgumentEncoder - PullRequest
1 голос
/ 10 июня 2019

Итак, я делаю приложение Metal Compute.И в соответствии с передовой практикой по металлу, MTLComputePipelineState следует инициализировать в начале программы, потому что это дорого.Чтобы сделать MTLComputePipelineState, я должен использовать MTLFunction, который является моей функцией ядра.Примерно так:

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

В этих ядрах я использую MTLArgumentEncoders для кодирования значений в моем буфере аргумента, который также использует функцию ядра.Примерно так:

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

Просто случайный вопрос, так как я кеширую свои MTLComputePipelineStates Должен ли я также кэшировать свои MTLArgumentEncoder с, если они влияют на производительность?

Спасибо

...