Forums - Multisample FBO

17 posts / 0 new
Last post
Multisample FBO
jsantos
Join Date: 1 Jun 13
Posts: 2
Posted: Sat, 2013-06-01 18:16

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.

  • Up0
  • Down0
jsantos
Join Date: 1 Jun 13
Posts: 2
Posted: Mon, 2013-06-03 12:01

can anyone help me?

  • Up0
  • Down0
mhfeldma Moderator
Join Date: 29 Nov 12
Posts: 310
Posted: Tue, 2013-06-04 14:04

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.

 

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Wed, 2013-07-17 05:44

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" ?

  • Up0
  • Down0
khawkins Moderator
Join Date: 29 Nov 12
Location: San Diego, CA
Posts: 62
Posted: Tue, 2013-08-06 15:46

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.

  • Up0
  • Down0
prollin
Join Date: 17 Aug 11
Posts: 3
Posted: Wed, 2013-10-02 23:13

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 :) 


 

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

 

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.

  • Up0
  • Down0
Evan
Join Date: 5 Mar 13
Posts: 34
Posted: Thu, 2013-10-03 11:07

Re: other Android GPUs supporting this approach, it does seem to work on the Nexus 10 (Mali) too. 

  • Up0
  • Down0
prollin
Join Date: 17 Aug 11
Posts: 3
Posted: Thu, 2013-10-03 11:45

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). 

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Thu, 2013-10-03 11:45

That's because Mali T604 supports GL ES 3.

  • Up0
  • Down0
Evan
Join Date: 5 Mar 13
Posts: 34
Posted: Thu, 2013-10-03 12:09

Right I was just saying that the general process of getting ES3 function pointers from eglGetProcAddress works on the T604 as well.

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Thu, 2013-10-03 12:42

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.

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Thu, 2013-10-03 12:43

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)

  • Up0
  • Down0
khawkins Moderator
Join Date: 29 Nov 12
Location: San Diego, CA
Posts: 62
Posted: Thu, 2013-10-03 12:49

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

  • Up0
  • Down0
Evan
Join Date: 5 Mar 13
Posts: 34
Posted: Thu, 2013-10-03 13:37

@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.

  • Up0
  • Down0
RelativeGames
Profile picture
Join Date: 16 Apr 13
Posts: 56
Posted: Thu, 2013-10-03 14:22

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 :|

  • Up0
  • Down0
khawkins Moderator
Join Date: 29 Nov 12
Location: San Diego, CA
Posts: 62
Posted: Mon, 2013-10-07 08:51

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

  • 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.