Hi,
I see that there are no multisample extesion on Adreno devices. I know that using eglChooseConfig it can be activated in the default framebuffer. But what happens with framebuffer objects? I miss extension like GL EXT framebuffer multisample or GL_EXT_multisampled_render_to_texture that are found in other architectures.
can anyone help me?
Hi..
We don't support those particular extension(s) for multisample FBOs
We do recomment using an approach described in this gles3 spec to create FBOs with multiple samples, which will then be rendered appropriately.
http://www.khronos.org/registry/gles/specs/3.0/es_spec_3.0.0.pdf
This will work on devices with our Adreno 3xx GPU.
You can use glBlitFramebuffer to help draw the multiple buffers.
That answer was so damn vague...
Do you mean that the function mentioned in the specs as being from core ES 3 RenderbufferStorageMultisample can be accessed even now through ES 2 extensions if we call eglGetProcAddress for, what, "glRenderbufferStorageMultisample" ?
Yes. Look at the OpenGL ES Extension Library in the Adreno SDK for an example of how OpenGL ES 3 functions can be accessed through our driver (the library is located in SDK/Development/Tools/GLESExtLib). Also look at the Adreno SDK Sample Framework, specifically how the code in SDK/Development/Samples/Framework/OpenGLES/FrmGLES3.cpp/.h is being used.
Sorry to revive this thread but I have the exact same issue with Adreno devices and the response given confuses me.
Just for the sake of clarity, do you mean that it is possible to call GLES3 functions (in this case glRenderbufferStorageMultisample, and glBlitFramebuffer) in a GLES2 context ? Doesn't sound very standard to me ... but if that works I take it :)
Android's support of OpenGL ES 3 is shitty, you don't need to change anything from GLES2 to get an GLES 3 context, if it's supported it will be retrieved. Adreno 320 supports it even if the Android version is not 4.3 (I only tested with 4.3 though) You can retrieve glRenderbufferStorageMultisample and glBlitFramebuffer with eglGetProcAddress and they'll work (because the driver supports GLES3 ) but don't assume this is true for all Android GPUs though.
Re: other Android GPUs supporting this approach, it does seem to work on the Nexus 10 (Mali) too.
The Nexus 10 supports GL_EXT_multisampled_render_to_texture so there is no need for a hack there (tested it, it works as expected).
That's because Mali T604 supports GL ES 3.
Right I was just saying that the general process of getting ES3 function pointers from eglGetProcAddress works on the T604 as well.
If you're running on Android 4.3+ fetching glRenderbufferMultisample will succeed through eglGetProcAddress, but it won't have any effect, that's what I'm trying to point out.
Crap, can't edit my post. On all devices running Android 4.3+ retrieving the function will succeed even if the driver does not support this GL ES 3 functionality (like take Galaxy Nexus for example, function gets returned but doesn't do anything)
I recommend the OpenGL ES 3.0 Quick Reference Guide for Adreno GPUs we have in the latest Adreno SDK release (3.4). With regards to Android, I think you'll be particularly interested in the content starting with page 16 of the Guide.
Kevin
@RelativeGames Oh you're right. I just re-tested our Nexus 7 (1st gen) and it returned pointers for those functions, I thought I had seen it return null before.
Mister Kevin Hawkins, who can I talk to about driver issues on Adreno 320 ? I have 2 unanswered forum posts and I just compiled a complex GLES3 shader (I'm using 3 uniform buffers) that fails to link because of an "Internal error.--From Fragment Shader:" . I'm already having 3 major issues with this driver... the implementation is just substandard...
And I'm not bashing just to bash, I'd be more than happy to give you the shaders I used so that the next firmware update fixes things, I just want you guys to collaborate more :|
RelativeGames - We are making changes to be more responsive to developer needs, and we hope you will see an improvement in our collaboration moving forward. While I can't give you a specific contact at the moment, we do see your issues and concerns and are working to make sure the appropriate support can be provided to you.
Kevin