Компиляция нескольких файлов .metal в один .metallib - PullRequest
0 голосов
/ 10 декабря 2018

В настоящее время я пишу несколько пользовательских фильтров Core Image, используя Metal.Ради структуры я хочу поместить разные ядра в разные файлы .metal с некоторыми общими включениями, как вы сделали бы с «обычными» исходными файлами.Однако, когда инструмент metallib объединяет различные файлы .air, созданные компилятором Metal, в один файл .metallib, отображаются только те функции ядра, которые определены в первом входном файле .air, присвоенном metallib.Функции из других .air файлов, похоже, не включены.В чем причина этого?

Я подумал (как это происходит при компиляции файлов Metal по умолчанию), что все источники Metal скомпилированы в одну библиотеку, которая затем используется каждым пользовательским классом CIFilter для создания экземпляра их внутреннего CIKernel с функцией, которая им нужна.Теперь я закончил скомпилировать файл .metallib для каждого настраиваемого фильтра с настраиваемыми правилами сборки и скопировать их все в мою инфраструктуру с использованием настраиваемой фазы сборки.Похоже, это не тот путь ...

...