Forums - Tiled rendering on adreno ?

5 posts / 0 new
Last post
Tiled rendering on adreno ?
mxadd
Join Date: 20 Aug 10
Location: Poland
Posts: 20
Posted: Wed, 2011-01-05 12:49

Hi

After some profilling, it seems that main botleneck now is related to binning, framebuffer is rather fat (rgba8 + d24s8) so this does not help, i could reduce it to rgb16, but I need stencil so d24s8 must be here.

How the binning exacly work ? Just like 'predicated tiling' on xbox360 console ? (for first tile the whole command buffer is played, and all vertex shader are executed, filling the Hi-Z (for whole frame) and rasterise to that tile, and queres are made into HiZ to determine if individual DrawCalls will be visible in subsequent tiles, then the command buffer is replayed for all remaining tiles and queres are used to trivialy discard DrawCalls that do not contribute to that tile (based on HiZ)) - or there is different logic behind it ?

All in all in my game I already have screenspace bounding box for each unit (skinned object with possibly costly vertex shader, etc. etc.), so I could use this information to feed QCOM_tiled_rendering extension ... but again IS THIS EXTENSION SUPPORTED ON ANDROID ? couse i could not find in in GLESv2.so so link fails.

If the extension is not supported, is there any other way to hint driver that the particular drawcall belongs only to specified bins and it should not execute vertex shader for all the other ?

Thanks for any information on this!

Ps. BTW, why all those fancy extensions are in extension string but are not supported on android platform ? This is somehow misleading, i know that hardware may do some cool thing, but i could not use it since from unknown reason it's not exposed to programmer ;]

  • Up0
  • Down0
Steve L Moderator
Join Date: 1 Oct 12
Posts: 132
Posted: Wed, 2011-01-19 16:31

Binning does work like the Xbox 360, and the binning extension should b e supported on Android.  What device are you using and what functions aren't resolving for you?

  • Up0
  • Down0
mxadd
Join Date: 20 Aug 10
Location: Poland
Posts: 20
Posted: Thu, 2011-01-20 12:25

Thanks for replay

 

I'm using nexus one from google, and glStartTilingQCOM and glEndTilingQCOM do not exist in *.so, (target = android 2.2, NDK5) so i could not even link my native engine on the PC side.

There is no egl support on the native side either so eglGetProcAddress does not exist at all for c/c++ developers on android. The only qcom specific extension in 'standard' .so for gles 2.0 are: GL_QCOM_driver_control ;)

On the other hand from java land (import javax.microedition.khronos.egl.EGL10) EGL10 does not implement eglGetProcAddress ... so there is no f**king way to get proc address of extension this way.

I'v ben desperate and dumped my phone rom, to see if glStartTilingQCOM is there, and it IS, as the eglGetProcAddress in fact, they are just not exposed thru any 'legal' mechanism (i could calculate offset inside SO to eglGetProcAddres, then get relocation base of that so when my proces starts, then from those two construct valid function pointer ... but this is way to hackish to release app with that hack on market ;)))

 

so any solution to get ths extension :> ?

 

  • Up0
  • Down0
Dave_Astle Moderator
Profile picture
Join Date: 15 Mar 10
Location: San Diego, CA
Posts: 33
Posted: Thu, 2011-01-27 15:55

Although Android only started supporting EGL with 2.3, we've been shipping it with our drivers since 2.0. All you have to do to use it is to copy the EGL headers and libs from the android-9 platform of the NDK to android-8, you should be able to build it, so you can use this to use eglGetProcAddress. This will cause a crash on any of our phones without the EGL libraries, but most of them should have it.

  • Up0
  • Down0
mxadd
Join Date: 20 Aug 10
Location: Poland
Posts: 20
Posted: Fri, 2011-01-28 13:34

I could use dlopen / dlsym to load egl.so get eglGetProcAddress but when i call it, it always returns null, no mather what proc addres I want to get :/ ... i'll try with the method you mention - still what the difference - link statically or dlopen ?

your method (static link to egl.so) will be useless if it will fail on 2.1 and 2.2 devices with sgx chips (galaxy S / galaxy tab for example), i'll check this out anyway.

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