Forums - Android 4.3 Google Play Edition on HTC One / Adreno 320 -- still no GL ES 3.x?!

8 posts / 0 new
Last post
Android 4.3 Google Play Edition on HTC One / Adreno 320 -- still no GL ES 3.x?!
metaleap
Join Date: 23 Oct 13
Posts: 2
Posted: Wed, 2013-10-23 12:38

GL renderer info gives me "OpenGL ES 2.0" --- wondering how I can finally get to OpenGL ES 3.0? I have Android 4.3 and a GL ES 3.x-certified GPU (Adreno 320) --- there should be nothing to stop me from digging into the GL ES 3.0 goodness! Alas, seems like whatever driver comes out of box with the HTC One's "Google Play Edition" of Android 4.3 won't give me that.

Is there a custom developer driver we can install? My device has S-OFF, unlocked Bootloader and I know how to adb and fastboot.. how do I get GL ES 3.0 on my Adreno 320?

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Wed, 2013-10-23 18:32

Try through eglGetProcAddress ? (Available only in NDK btw)

There's some helper files that comes with the Android 4.3 SDK called gl3stub.h/.c that contains all the differences from GLES 2 to GLES3. If all function fetching succeeds you should have an OpenGL ES 3 ready implementation.

Those files are mainly to support GLES3 functionality on devices that support it but don't have the Android 4.3 OS update.

  • Up0
  • Down0
metaleap
Join Date: 23 Oct 13
Posts: 2
Posted: Wed, 2013-10-23 18:53

Good ideas but here's the fun part, I don't do native dev here at all, I'm relying on Unity Pro 4.2.2 for GL ES 3.x graphics; that generally works if GL ES 3.x is reported properly by the driver, which on my device simply isn't happening:

In addition to my own simple test app made in Unity ---that simply prints out SystemInfo.graphicsDeviceVersion which is really just a call to glGetString(GL_VERSION)--- I have installed from Play Store numerous "GL benchmarks", "GL ES info" apps etc (only installed recently updated ones where the description is clearly stating they support and detect GL ES 3.x if present).

In all those apps only GL ES 2.x is ever reported as being present.

So I was hoping to find out on the forum of the manufacturer of my mobile GPU what the big deal is about this.. do I have to wait for HTC for updated drivers, even when using "stock android" (Google Play Edition)? If so, I'm screwed and probably get an update in 8 months or never.

Sure I could check out HTC support but let's face it they will have even less of a clue than me. Ultimately, those mobile chips get drivers from the chip manufacturer, even if distributed by the phone manufacturer, but there must be a shortcut for coders..

So .... surely there must be some kind of "Qualcomm developers network" up-to-the-minute Adreno-320 Android drivers for us developers somewhere ...... right?  ;)  :D

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Wed, 2013-10-23 23:00

If you look on this page under "Drivers"

https://developer.qualcomm.com/mobile-development/mobile-technologies/ga...

You'll see some of them, but to be honest, I have no idea how to install them, as I found no how-tos on the matter and I'm a bit afraid to just overwrite them with what I have as I don't wanna brick my device and spend dozens of hours fixing it back.

As for the "other apps" that report GL version they just report GL_VERSION . That's the standard GL way to report the version. However, I think there's some OS problems if the driver reports 3 instead of 2, hence why they needed OS support in 4.3. I'm not 100% sure on this, just guesses from my experiences. Heck, with a GLES 3 device you're still requesting the EGL layer to give you a GLES 2 context which is absurd ! and btw, as a note, having Android 4.3 does not mean that all future 4.3 devices will support GLES3, just that they could.

And again from assumptions and talks with driver guys, the Manufacturer/SoC provider (HTC here) does indeed need to take the latest GPU driver and integrate it into their kernel/Android build/whatever, and from what I can tell it's not as easy as copy-pasting things (although I think it should be, as the interfaces should be identical, it's the same EGL 1.4, there's no OS based extensions in GLES3, so no idea what's taking them so much time).

  • Up0
  • Down0
mhfeldma Moderator
Join Date: 29 Nov 12
Posts: 310
Posted: Thu, 2013-10-24 11:31

If you take a look at the recent Adreno SDK (3.4), you find a OpenGLES3_QuickRef_Guide_Adreno.pdf which describes how to support GLES 3.0 in your app even when the ES 3 is not exposed. 

https://developer.qualcomm.com/mobile-development/mobile-technologies/gaming-graphics-optimization-adreno/tools-and-resources

 

The general strategy is to use an extension library.

The Qualcomm Adreno SDK v3.2 contains an extension library which simplifies targeting OpenGL ES 3.0 and can be used with versions of Android prior to 4.3. This library exposes GLES3 functions and extensions, it is easy to use. Simple steps of its use include:

 Call Create() method of library object

 Use OpenGL ES 3 functions and extensions

Also you find that the ES 3 examples in the Adreno SDK can use this extension library.

 

 

 

 

  • Up0
  • Down0
jake.weinstein
Join Date: 11 Feb 13
Posts: 44
Posted: Fri, 2013-11-08 13:45

QCOM doesn't post reference binaries very often, but their kernels are very lenient.  Unlike Imagination Technologies PowerVR GPUs, where the kernel drivers and binaries must match, that is not the case here.  I ran HTC One Google Play Edition, HTC One, and Nexus 4 EGLs on my Optimus G without any kernel changes.  You should be fine with running HTC One EGLs, but I don't think that's your problem.  I suspect that the problem is that libGLESv3.so is not a symlink to libGLESv2.so.  Make sure it is using any root explorer or adb.

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Sat, 2013-11-09 06:31

@xboxfanj

Oh really ?

I just looked at /system/lib/libGLESv3.so on my Nexus 4 with 4.3, it has exactly 0.00 bytes while libGLESv2.so has 29.03KB. One weird thing though is that the file permissions for GLES2 and GLES3 libs are different.

  • Up0
  • Down0
jake.weinstein
Join Date: 11 Feb 13
Posts: 44
Posted: Sat, 2013-11-09 17:03

It's different permissions for me.  I guess that could be due to the symlink.  If you look at the file in Explorer (free Root Explorer by the same author), it should say libGLESv2.so instead of the size for libGLESv3.so.  If not, perhaps delete it and manually make a new symlink.

  • Up0
  • Down0
or Register

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.