The Adreno 4XX GPU family has been advertised to feature OpenGL ES 3.1 and Android Extension Package. A quick look on gfxbench.com shows that Adreno 420 is just a OpenGL ES 3.0 GPUs with AEP, and Adreno 405 doesn't even feature AEP
Nexus 6 .- GLES 3.0 + AEP
http://gfxbench.com/device.jsp?benchmark=gfx30&os=Android&api=gl&D=Google+Nexus+6&testgroup=info
HTC Desire D820 - GLES 3.0, no AEP
http://gfxbench.com/device.jsp?benchmark=gfx30&os=Android&api=gl&D=HTC+Desire+D820&testgroup=info
Do they both support GLES 3.1 + AEP or just GLES 3.0 + AEP ? Is this real, is it a mistake ?
I'm going to have to check on a few things before I can provide a more detailed response. I can say that the entire Adreno 400 line is capable of OpenGL ES 3.1 + AEP support, but our drivers for 3.1/AEP are only recently commercializing. It's odd that the Nexus 6 is reporting AEP but not 3.1, since these will always be present together.
Sadly I can confirm that the Nexus 6 / Adreno 420 ships with only GLES 3.0 drivers. I have confirmed this via "eglQueryContext" with "EGL_CONTEXT_MAJOR_VERSION_KHR" and "EGL_CONTEXT_MINOR_VERSION_KHR" after creating a context with EGL 1.4 using the same major / minor versions in the attrib list. All the NVidia Tegra K1 devices I have work correctly w/ GLES 3.1 support. I'm working with compute shaders. Trying to create a "3" / "1" context will fail on the Nexus 6. Using "3" / "0" works fine.
Defaulting back to "EGL_CONTEXT_CLIENT_VERSION" using "3" creates a 3.0 context on the Nexus 6 and 3.1 with all Tegra K1 devices as per the general guidelines of creating the highest major / minor context the devices supports for the "major" version specified by "EGL_CONTEXT_CLIENT_VERSION".
Strangely enough compiling compute shaders with the Android 5.0 Java SDK doesn't complain on the N6 and silently fails when invoked. I wasted many hours due to the the N6 shipping only with GLES 3.0. I should have checked the context version, but believed the marketing literature.
Please Qualcomm update firmware / drivers for all Adreno 420 devices; you know how long it takes OEMs to do so and consumers are not going to be able to understand why their brand new devices can't run OpenGL 3.1 based apps and will blame us the developers! To hear that things are in the pipeline and not available on launch despite all marketing materials stating that the 420 supports OpenGL ES 3.1 / AEP is a dissapointment in general. I specifically bought the Nexus 6 to test OpenGL ES 3.1 / Adreno 420 / compute shaders on a phone form factor device.
I just checked... The Nexus 6 / Adreno 420 does show that AEP is likely supported with a check for "ANDROID_extension_pack_es31a" in via searching the GL_EXTENSIONS strings returned by glGetString. What that means in regard to only having a GLES 3.0 context w/ AEP is a bit unclear as far as usability goes.
ANDROID_extension_pack_es31a being returned as part of the extensions string is a bug. AEP support will only be included as part of a 3.1 driver.
As mentioned above, the GPUs in these devices support OpenGL ES 3.1/AEP, but they obviously need a driver to access that functionality. Currently, the commercially shipping drivers on these devices are OpenGL ES 3.0. Unfortunately, I can't comment on the availablity of a OpenGL ES 3.1/AEP driver on these devices because ultimately that's a product decision made by our customers.