I had a BasicGame app that runs fine on my phone, but when I install to tablet, I get the following in the logcat:
ERROR: Unable to get a valid OpenGL ES 2.0 config, neither Fastest nor Best found! Bug. Please report this.
Logcat is below. The app runs fine on Motorola Bionic with 2.3.4 and errors out on Motoloa Xoom with 4.0.4.
[EDIT] Thought I should also mention, running from jMonkey SDK (engine is latest build from source) and have not updated Android SDK for a long time using Android SDK 16.
[java]
I/ActivityManager( 206): Start proc com.mygame.motionsensor for activity com.mygame.motionsensor/.MainActivity: pid=19242 uid=10050 gids={}
D/dalvikvm(19232): GC_CONCURRENT freed 101K, 81% free 486K/2560K, paused 1ms+1ms
D/jdwp (19232): Got wake-up signal, bailing out of select
D/dalvikvm(19232): Debugger has detached; object registry had 1 entries
I/dalvikvm(19242): Turning on JNI app bug workarounds for target SDK version 8…
D/OpenGLRenderer( 494): Flushing caches (mode 1)
D/OpenGLRenderer( 494): Flushing caches (mode 0)
I/AndroidHarness(19242): onCreate: onRetainNonConfigurationInstance is null
I/JmeSystem(19242): INFO JmeAndroidSystem 5:07:33 PM Running on jMonkeyEngine 3.0.0 Beta
D/libEGL (19242): loaded /system/lib/egl/libGLES_android.so
D/libEGL (19242): loaded /system/lib/egl/libEGL_tegra.so
D/libEGL (19242): loaded /system/lib/egl/libGLESv1_CM_tegra.so
D/libEGL (19242): loaded /system/lib/egl/libGLESv2_tegra.so
I/OGLESContext(19242): INFO OGLESContext 5:07:33 PM Display EGL Version: 1.0
I/AndroidConfigChooser(19242): JME3 using best EGL configuration available here:
E/AndroidConfigChooser(19242): ERROR: Unable to get a valid OpenGL ES 2.0 config, neither Fastest nor Best found! Bug. Please report this.
E/Application(19242): SEVERE Application 5:07:34 PM Unable to find suitable EGL config
W/AndroidHarness(19242): WARNING AndroidHarness 5:07:34 PM Resolution from Window: 1,280, 752
I/AndroidHarness(19242): INFO AndroidHarness 5:07:34 PM Splash Screen Picture Resource ID: 0
I/AndroidHarness(19242): Splash Screen Skipped.
E/AndroidHarness(19242): Class mygame.Main init failed
E/AndroidHarness(19242): java.lang.NullPointerException
E/AndroidHarness(19242): at android.view.ViewGroup.addViewInner(ViewGroup.java:3336)
E/AndroidHarness(19242): at android.view.ViewGroup.addView(ViewGroup.java:3208)
E/AndroidHarness(19242): at android.view.ViewGroup.addView(ViewGroup.java:3188)
E/AndroidHarness(19242): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
E/AndroidHarness(19242): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:260)
E/AndroidHarness(19242): at android.app.Activity.setContentView(Activity.java:1855)
E/AndroidHarness(19242): at com.jme3.app.AndroidHarness.layoutDisplay(AndroidHarness.java:451)
E/AndroidHarness(19242): at com.jme3.app.AndroidHarness.onCreate(AndroidHarness.java:232)
E/AndroidHarness(19242): at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidHarness(19242): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidHarness(19242): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
E/AndroidHarness(19242): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E/AndroidHarness(19242): at android.app.ActivityThread.access$600(ActivityThread.java:123)
E/AndroidHarness(19242): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
E/AndroidHarness(19242): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidHarness(19242): at android.os.Looper.loop(Looper.java:137)
E/AndroidHarness(19242): at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidHarness(19242): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidHarness(19242): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidHarness(19242): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidHarness(19242): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidHarness(19242): at dalvik.system.NativeStart.main(Native Method)
I/AndroidHarness(19242): onStart
I/AndroidHarness(19242): onResume
[/java]
Getting ERROR: Unable to get a valid OpenGL ES 2.0 config, neither Fastest nor Best found! Bug. Plea
Update: When I switch to any of the following
[java]
eglConfigType = ConfigType.BEST_TRANSLUCENT;
eglConfigType = ConfigType.FASTEST;
eglConfigType = ConfigType.LEGACY;
[/java]
it works.
It only fails when I use
[java]
eglConfigType = ConfigType.BEST;
[/java]
I’ve tested jME3 before on a Xoom with Android 4 and it worked fine. This is a rather odd bug to say the least.
I’m pretty sure I’ve installed something on my Xoom before as well. Maybe something changed with AndroidConfigChooser or ComponentSizeChooser. I seemed to remember @nehon changed something not that long ago, but can’t seem to remember what it was. Not sure if that is related or not. I’m trying to debug this, but not getting anywhere yet.
What’s the difference between the different configurations? Is it really only used in the findConfig method of AndroidConfigChooser?
[java]
public boolean findConfig(EGL10 egl, EGLDisplay display) {
ComponentSizeChooser compChooser = null;
switch (type) {
case BEST:
compChooser = new ComponentSizeChooser(8, 8, 8, 0, 32, 0);
choosenConfig = compChooser.chooseConfig(egl, display);
if (choosenConfig == null) {
compChooser = new ComponentSizeChooser(8, 8, 8, 0, 16, 0);
choosenConfig = compChooser.chooseConfig(egl, display);
}
logger.info("JME3 using best EGL configuration available here: ");
break;
case BEST_TRANSLUCENT:
compChooser = new ComponentSizeChooser(8, 8, 8, 8, 32, 0);
choosenConfig = compChooser.chooseConfig(egl, display);
if (choosenConfig == null) {
compChooser = new ComponentSizeChooser(8, 8, 8, 8, 16, 0);
choosenConfig = compChooser.chooseConfig(egl, display);
}
logger.info("JME3 using best EGL configuration available here with translucent pixels: ");
break;
case FASTEST:
compChooser = new ComponentSizeChooser(5, 6, 5, 0, 16, 0);
choosenConfig = compChooser.chooseConfig(egl, display);
logger.info("JME3 using fastest EGL configuration available here: ");
break;
}
if (choosenConfig != null) {
logger.info("JME3 using choosen config: ");
logEGLConfig(choosenConfig, display, egl);
pixelFormat = getPixelFormat(choosenConfig, display, egl);
clientOpenGLESVersion = getOpenGLVersion(choosenConfig, display, egl);
return true;
} else {
logger.severe(“ERROR: Unable to get a valid OpenGL ES 2.0 config, neither Fastest nor Best found! Bug. Please report this.”);
clientOpenGLESVersion = 1;
pixelFormat = PixelFormat.UNKNOWN;
return false;
}
}
[/java]
Looks like AndroidConfigChooser was changed back in June to change BEST to an opaque background. Maybe there’s something related to that here.
From a quick look at the source I can already tell there’s going to be some issues. The current config choosers try to find an exact match for color/alpha which is definitely not guaranteed. On NVIDIA platforms I can guess they optimize the common case (RGBA / 32 bit) by only exposing the RGBA8 format and not exposing RGB8, there’s your bug.
I figured out why it is failing. It is as you said. I put some debug in to list all the supported configs that match the 8,8,8,0,16,0 config spec.
Below is the list that was returned. As you can see, there is not an exact match so it fails.
Should it not try to exact match the alpha but rather grab an alpha 0 config if it can while allowing the non-0 alpha configs to be used?
[java]
I/AndroidConfigChooser(15156): Starting custom ogles config tests
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM There are 57 configurations
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM There are 8 configurations that match the configAttrs
I/AndroidConfigChooser(15156): All Configs:
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs0 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 7
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs1 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 6
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs2 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 7
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs3 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 6
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs4 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs5 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs6 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs7 is not null
I/AndroidConfigChooser(15156): EGL_RED_SIZE = 8
I/AndroidConfigChooser(15156): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(15156): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(15156): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(15156): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(15156): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(15156): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(15156): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs8 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs9 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs10 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs11 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs12 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs13 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs14 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs15 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs16 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs17 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs18 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs19 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs20 is null
D/dalvikvm(15156): GC_CONCURRENT freed 388K, 7% free 6587K/7047K, paused 2ms+2ms
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs21 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs22 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs23 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs24 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs25 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs26 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs27 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs28 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs29 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs30 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs31 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs32 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs33 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs34 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs35 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs36 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs37 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs38 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs39 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs40 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs41 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs42 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs43 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs44 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs45 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs46 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs47 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs48 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs49 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs50 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs51 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs52 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs53 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs54 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs55 is null
I/AndroidConfigChooser(15156): INFO BaseConfigChooser 10:25:41 PM eglConfigs56 is null
[/java]
@iwgeric said:
Should it not try to exact match the alpha but rather grab an alpha 0 config if it can while allowing the non-0 alpha configs to be used?
Exactly. You can actually see it does this for depth and stencil but incorrectly, it chooses the first config that has these either greater or equal, it should try to choose an exact matching one, and only then try to find a higher one.
I just changed the BEST to opaque yes as it was transparent before. This gives a big boost on most device since the pixel doesn’t have to be read again for transparency.
Most games does not overlay the surface on top of android UI, so opaque is perfectly fine.
Whatever you do, for best config, always try to have an alpha channel to 0, just check if the format is available and fallback to the first found as it seems to be the problem.
@nehon @Momoko_Fan
Based on the fact that the configs are already sorted by the chooseConfig method, I’ll make a change that tries to find an exact match for r, g, b, a, d, s and if not found, use the first config in the array.
That sound ok?
Sounds good to me
@iwgeric said:
@nehon @Momoko_Fan
Based on the fact that the configs are already sorted by the chooseConfig method, I'll make a change that tries to find an exact match for r, g, b, a, d, s and if not found, use the first config in the array.
That sound ok?
Sounds good
@nehon @Momoko_Fan
So I made the change described above, but noticed that on my phone, the first config does not contain a 0 length alpha buffer, while a later one has an alpha size of 0 with the stencil size of 8.
My question is: Is it more important to have the 0bit alpha size with maybe > 0bit stencil size, or use the first one that has a 8bit alpha with a 0bit stencil? I don’t think we want to lose the benefit of the 0bit alpha which means picking one of later configs.
The first logcat below is what is returned on my phone. When jme tries the first BEST config (32bit depth), it returns 0 configs. Then when it tries again with 16bit depth, it returns the configs below. Notice that the first one has an 8bit alpha, while the 3rd config has an 0bit alpha and 8bit stencil.
The second logcat is from my Xoom which also returns 0 configs for the 32bit depth, but does not have any configs available with a 0bit alpha.
I’m thinking that I need to do the exact match first and then try to pick one with 0bit alpha next, and then finally pick the first config. Do you agree?
Bionic Phone with Android 2.3
[java]
//Here it is trying to use 32bit depth
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: eglChooseConfig returned true
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: numConfigs <= 0
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: choosenConfig == null
//Here it is trying to use 16bit depth
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: eglChooseConfig returned true
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM num_config: 6
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM There are 6 configurations that match the configAttrs
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: All Matching Configs:
09-10 12:39:38.927 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM configs0 is not null
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RED_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_GREEN_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_BLUE_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_ALPHA_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_DEPTH_SIZE = 24
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_STENCIL_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RENDERABLE_TYPE = 4
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_SURFACE_TYPE = 5
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM configs1 is not null
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RED_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_GREEN_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_BLUE_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_ALPHA_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_DEPTH_SIZE = 24
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_STENCIL_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RENDERABLE_TYPE = 4
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_SURFACE_TYPE = 5
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM configs2 is not null
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RED_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_GREEN_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_BLUE_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_ALPHA_SIZE = 0
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_DEPTH_SIZE = 24
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_STENCIL_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RENDERABLE_TYPE = 4
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_SURFACE_TYPE = 5
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM configs3 is not null
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RED_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_GREEN_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_BLUE_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_ALPHA_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_DEPTH_SIZE = 24
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_STENCIL_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RENDERABLE_TYPE = 4
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_SURFACE_TYPE = 4
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM configs4 is not null
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RED_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_GREEN_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_BLUE_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_ALPHA_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_DEPTH_SIZE = 24
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_STENCIL_SIZE = 8
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_RENDERABLE_TYPE = 4
09-10 12:39:38.935 8896 8896 I AndroidConfigChooser: EGL_SURFACE_TYPE = 4
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: INFO BaseConfigChooser 12:39:38 PM configs5 is not null
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_RED_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_GREEN_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_BLUE_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_ALPHA_SIZE = 0
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_DEPTH_SIZE = 24
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_STENCIL_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_RENDERABLE_TYPE = 4
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_SURFACE_TYPE = 4
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: Using 2nd choosenConfig
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: JME3 using best EGL configuration available here:
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: JME3 using choosen config:
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_RED_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_GREEN_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_BLUE_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_ALPHA_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_DEPTH_SIZE = 24
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_STENCIL_SIZE = 8
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_RENDERABLE_TYPE = 4
09-10 12:39:38.943 8896 8896 I AndroidConfigChooser: EGL_SURFACE_TYPE = 5
[/java]
Xoom with Android 4.0
[java]
//Here it is trying to use 32bit depth
I/AndroidConfigChooser(27766): INFO AndroidConfigChooser 12:50:03 PM Trying config: BEST
I/AndroidConfigChooser(27766): eglChooseConfig returned true
I/AndroidConfigChooser(27766): numConfigs <= 0
I/AndroidConfigChooser(27766): choosenConfig == null
//Here it is trying to use 16bit depth
I/AndroidConfigChooser(27766): eglChooseConfig returned true
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM num_config: 8
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM There are 8 configurations that match the configAttrs
I/AndroidConfigChooser(27766): All Matching Configs:
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs0 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 7
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs1 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 6
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs2 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 7
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs3 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 6
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1127
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs4 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs5 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs6 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(27766): INFO BaseConfigChooser 12:50:03 PM configs7 is not null
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 8
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 4
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1125
I/AndroidConfigChooser(27766): Using 2nd choosenConfig
I/AndroidConfigChooser(27766): JME3 using best EGL configuration available here:
I/AndroidConfigChooser(27766): JME3 using choosen config:
I/AndroidConfigChooser(27766): EGL_RED_SIZE = 8
I/AndroidConfigChooser(27766): EGL_GREEN_SIZE = 8
I/AndroidConfigChooser(27766): EGL_BLUE_SIZE = 8
I/AndroidConfigChooser(27766): EGL_ALPHA_SIZE = 8
I/AndroidConfigChooser(27766): EGL_DEPTH_SIZE = 16
I/AndroidConfigChooser(27766): EGL_STENCIL_SIZE = 0
I/AndroidConfigChooser(27766): EGL_RENDERABLE_TYPE = 7
I/AndroidConfigChooser(27766): EGL_SURFACE_TYPE = 1127
[/java]
A stencil of 8 is preferable to an alpha of 8 because alpha of 8 implies possibly blending with the background which would be slow on some platforms. Generally 8 bit stencil is combined together with the depth buffer and since jME3 doesn’t use it, there’s no performance loss.
Thanks what I thought, but wanted to make sure.
This means I’ll do 2 passes through the config list.
Pass 1 is to try to find an exact match.
Pass 2 will look for an exact match of RBGA and accept whatever D and S is there as long as they are > the config spec values (I believe this is what was done originally)
Fall back will be to use the first config in the list.