Android OpenGL ES: автокоррекция env-> self и NvRmChannelSubmit не удалось

Два вопроса ниже.

У нас есть графическое приложение OpenGL ES 2, которое хорошо работает в течение нескольких лет на компьютерах с ОС Windows, Linux, MacOS, iPhone, iPad и Android. В последние несколько месяцев мы начали получать отзывы от пользователей некоторых из Android-устройств (таких как Toshiba Thrive, HTC One X, Nexus 7 или Asus Transformer, API 15 и 17) в отношении проблем с черным или мерцающим экраном или редко приложением авария. Наше приложение предназначено для API 9 и выше, и оно написано в NDK с использованием NativeActivity, основанного непосредственно на примерах и демонстрациях nvidia android, оно было тщательно протестировано на всех платформах, без утечек памяти, без недопустимых обращений к памяти, редко вызывает небольшую java-версию код.

Посмотрев на LogCat, мы заметили два типа сообщений об ошибках на этих устройствах:

(1) JNI ERROR: env->self != thread-self (0x11734c0 vs. 0xd6d360); auto-correcting JNI ERROR: env->self != thread-self (0x11734c0 vs. 0xd6d360); auto-correcting

(2) NvRmChannelSubmit failed (err = 196623, SyncPointValue = 0) за которой следует GL_OUT_OF_MEMORY

Что касается (1), мы знаем о проблемах с потоками и JNI, и, мы надеемся, знаем, как это исправить. Я прочитал эту информацию, и мой вопрос здесь: «автокорректировка» означает, что мы должны беспокоиться о некоторой ОШИБКЕ, или это просто предупреждение, означающее, что код будет вести себя плохо В БУДУЩЕМ, но теперь он отлично работает (Исправлено!), И это не связано с вопросом (2)? Причина, по которой я спрашиваю, заключается в том, что иногда мы также видим следующие строки:

 E/libEGL: call to OpenGL ES API with no current context (logged once per thread) E/NvEGLUtil: Failure: eglSwapBuffers, error = 0x0000300d (swap:422) 

Которые выглядят серьезно. Мы протестировали наше приложение на эмуляторе API 17 с включенным JNIcheck – никаких проблем не сообщается, и приложение работает хорошо.

Теперь, касаясь сообщения (2), я нашел несколько форумов (например, здесь , здесь, а также это ), где люди сообщили это сообщение, и причины неясны. Похоже на прошивку или проблему с драйвером, а также на утечку памяти GPU или фрагментацию памяти … Многие игры затронуты мерцанием экрана, и люди пытаются перезагрузить / перезагрузить устройство, очистить кеш, обновить и т. Д., Но проблема, похоже, сохраняется , Эта проблема касается довольно многих популярных устройств. Несмотря на GL_OUT_OF_MEMORY ошибки GL_OUT_OF_MEMORY , «недостаточно памяти» не оправдано, потому что в приложении, которое мы использовали для тестов, использовались небольшие текстуры 32×32 вместо текстур 512×512, которые используются в обычной версии (и эти большие текстуры отлично работают на более старых устройствах). У любого есть какой-нибудь опыт в том, как исправить это, и разве это возможно на нашей стороне? Является ли это официально подтвержденной ошибкой аппаратного обеспечения / прошивки / ОС? Я ищу известную причину и реальное решение этой проблемы, а не обходное решение для проб и ошибок, которое случайно помогло бы, не зная почему .

Благодаря!