NSOpenGLView с WantLayer медленно на вторичном дисплее?

Я пытаюсь использовать NSOpenGLView с поддержкой слоя (wantLayer = YES) и заметил проблему с производительностью при запуске приложения на дополнительном дисплее.

Эту проблему проще всего воспроизвести на примере GLEssentials с добавлением self.wantsLayer=YES в [GLEssentialsGLView awakeFromNib],

https://developer.apple.com/library/mac/samplecode/GLEssentials/Introduction/Intro.html

Лучший способ увидеть проблему - это установить дисплей без сетчатки как основной дисплей в ОС и переместить приложение на дисплей сетчатки. Существует значительное замедление частоты кадров. Этого не происходит, когда используется только дисплей Retina, поэтому кажется, что есть какая-то проблема, связанная с дополнительным дисплеем. Это также не происходит, когда wantsLayer = NO, так что это также связано с тем, что слой поддерживается.

Мы не уверены, является ли это действительной ошибкой ОС, или требуется какая-то оптимизация, которую необходимо выполнить при переключении дисплеев, которых просто нет.

Есть идеи, если есть хороший обходной путь / техника? (К вашему сведению - я знаю о прозрачном наложении окон и хотел бы избежать этого, если это вообще возможно.)

1 ответ

К вашему сведению, это было зарегистрировано как проблема радара и помечено как исправленная в следующей основной версии ОС - 10.12 Sierra. Коллега подтвердил исправление.

Другие вопросы по тегам