Зажигание Kindle Fire и повреждение текстуры со скоростью 60 кадров в секунду

Это, по-видимому, проблема с графическим процессором Fire-specific, и я буду благодарен за любую помощь или предложения.

По большей части моя игра для защиты башни способна запускать 60 кадров в секунду даже с десятками врагов и башен всех стрельб в каждом направлении. Однако в кажущиеся случайными временами (даже при том, что ничего не происходит – как сидение в главном меню) очень равномерно разнесенные 400 мкс паузы приостанавливают игру с интервалом около 2-3 секунд. Затем внезапно гайки исчезнут, а 16×16 пиксельных блоков текстур будут беспорядочно отображать.

Эти два сбоя кажутся взаимоисключающими, и, как я сказал, это может быть вызвано просто путем запуска игры и перехода из главного меню на экран выбора уровня, где загружаются минимальные ресурсы и происходит небольшая логика игры. Я использую OpenSL для звуковых эффектов, и я заметил, что отключение sfx изменило длительность автофокуса до 280 мс.

Затем я вручную принудительно увеличил частоту кадров от 60 кадров в секунду до 30 кадров в секунду (путем вставки сна в цикл цикла кадров), и оба глюка полностью исчезли.

Вот скриншот экрана, который демонстрирует текстуру, а не рендеринг. Эта ошибка происходит на всех 32-битных поверхностях визуализации независимо от значений глубины / трафаретов и включена ли подсветка цвета.

Спасибо!

EDIT: На самом деле, по-видимому, мерцание текстуры происходит при любой частоте кадров, однако, где-то между 40 и 45 кадрами в секунду, 400-метровый автостоп уходит.

Экран выбора уровня

главное меню

Хорошо, это очень тонкая ошибка драйвера, не обязательно специфичная для Kindle Fire. Я надеюсь помочь кому-то избежать подобной боли в будущем. Я уже четко обозначил симптомы, но источник ошибки исходит от установки ножницы.

По сути, у нас есть много анимированных элементов пользовательского интерфейса, которые увеличивают масштаб и выключают экран, поэтому мы становимся довольно напуганными с помощью scissor rect. Триггер, как представляется, настраивает ножничный прямоугольник за кадром, а затем выводит его за пределы прямоугольника по горизонтали. Это делает GPU в некотором тонком прикрученном состоянии, которое, похоже, не проявляется сразу, а постепенно ухудшается.

Кроме того, похоже, что исправлена ​​ошибка, которую мы обнаружили в Droid RAZR, которая имеет графический процессор совместно с Fire. Ошибка была 5-секундным замораживанием в игре, где мы увидели бы в logcat:

W/SharedBufferStack(14208): waitForCondition(LockCondition) timed out (identity=173, status=0). CPU may be pegged. trying again. 

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