Two questions below.
We have an OpenGL ES 2 graphical application that has been working well for several years on phones running Windows, Linux, MacOS, iPhone, iPad and Android. In the past few months, we began to receive feedback from users of some Android devices (such as Toshiba Thrive, HTC One X, Nexus 7 or Asus Transformer, API 15 and 17) regarding problems with a black or flickering screen or rarely with an application crash. Our application is designed for API 9 and higher, and it is written in the NDK using NativeActivity, based directly on nvidia android examples and demos, it has been thoroughly tested on all platforms, without memory leaks, without invalid memory accesses, rarely causes a little java- version code.
Looking at LogCat, we noticed two types of error messages on these devices:
(1) JNI ERROR: env->self != thread-self (0x11734c0 vs. 0xd6d360); auto-correcting
(2) NvRmChannelSubmit failed (err = 196623, SyncPointValue = 0)followed byGL_OUT_OF_MEMORY
Regarding (1), we know about thread and JNI issues, and hopefully we know how to fix this. I read this information , and my question here is: "auto-correction" means we have to worry about some error or is it just a warning, meaning that the code will not work well in the future, but now it works fine (fixed!), And it doesn’t related to problem (2)? The reason I ask is because sometimes we also see the following lines:
E/libEGL: call to OpenGL ES API with no current context (logged once per thread)
E/NvEGLUtil: Failure: eglSwapBuffers, error = 0x0000300d (swap:422)
which look serious. We tested our application on the API 17 emulator with JNIcheck enabled - no problems were reported, and the application works well.
, (2), ( , , this), , . , ... , / reset , , .., . . , GL_OUT_OF_MEMORY " " , , , 32x32 512x512, ( ), - , , ? //? , , , .
!