Некоторое время назад я столкнулся с проблемой при eglSwapBuffers
зависании телефона со следующим сообщением, появляющимся в журнале устройства:
W/SharedBufferStack( 1110): waitForCondition(LockCondition) timed out (identity=28, status=0). CPU may be pegged. trying again.
Я видел дискуссию по этой проблеме по всему Интернету, но единственным решением, которое, как я нашел, имеет какой-либо эффект, является вызов glFinish
после eglSwapBuffers
. Это решение, однако, приводит к снижению частоты кадров с помощью коллинга 10-20, что далеко не приемлемо.
Проблемы были открыты, и можно найти здесь
Кто-то отметил, что использование квадратных текстур устранило проблему. По квадрату я изначально думал, что он имел в виду текстуры с двумя силовыми структурами, но после того, как я убедился, что не использовал текстуры без энергии и не избавляюсь от этой проблемы, я начал думать, что он мог бы иметь в виду текстуры с соответствующими ширина и высота?
Я тестирую HTC Desire с Android 2.3.3. Кто-то прокомментировал, что будущие версии должны были устранить эту проблему, но 2.3.3 установлен на таком количестве устройств, что мы не можем игнорировать его.
В любом случае, у кого есть какие-то мысли по этому поводу? Мы очень близки к отправке названия, и эта проблема угрожает расписанием.