Желание угробить MTKView.currentRenderPassDescriptor - PullRequest
0 голосов
/ 31 октября 2018

У меня иногда возникает проблема с моим MTKView рендерером, останавливающимся при получении currentRenderPassDescriptor для 1.0s. Согласно документам, это связано либо с тем, что устройство представления не установлено (оно есть), либо с недоступными чертежами.

Если нет доступных отрисовок, я не вижу возможности просто немедленно освободить или пропустить этот видеокадр. Цикл рендеринга остановится на 1.0 с.

Есть ли обходной путь для этого? . Любая помощь будет оценена.

Мой рабочий процесс - это набор шейдерных ядер, а не один финальный вершинный шейдер. Я мог бы сделать рисование конечного шейдера на своей собственной текстуре (вместо использования currentPassDescriptor), а затем обмануть эту текстуру в currentDrawable представления - но при получении этого рисованного мы возвращаемся к тому же самому сваливанию ситуация.

Должен ли я полностью избавиться от MTKView и вернуться к использованию CAMetalLayer? Опять же, я подозреваю, что возникнут те же проблемы с задержкой. Есть ли способ установить maximumDrawableCount на MTKView, как на CAMetalLayer?

Я немного сбит с толку, поскольку, согласно Metal System Trace, моя работа неизменно завершается при скорости 5,0 мс на кадр на iMac 2015 R9 M395.

...