Hi ,
I had meet a question that confuse me. I captured DS-5 Streamline data SwapBuffer of GLBenchMark .This test just refresh different color per frame.So I think it should be has the same Quads rasterized with screen size. I think it should be calculate that this:
( Quads rasterized )*4 / (screen width * screen height ) = 1( around) . But the data I captured was not as I thought . App should rasterize once , and to display it surfaceflinger will rasterize once again .I captured data on Mali 400(screen size 480*854) and Mali 720(screen size : 1080*1920 ) ,the result is same on rasterization. Here is the figures. Can you help me to figure it out .
Thanks !
Mali 720( two pp):
Quad Rasterized : 259559*4*2 from app calls opengl to surfaceflinger display it
Mali 400: ( 54802+ 54786) *4 from app calls opengl to surfaceflinger display it
Mali 720 : (259559*4) * 2 / (1080*1920) = 1.001385031
Mali 400 : (54802+ 54786) * 4 / (480 *854 ) = 1.069359875
So ,it should be 2 around . Beacuse App call opengl es call will cause once rasterized , and surface-flinger will call GPU to do composition ,so it also needs once rasterized .
Hi lhr2523,
Surfaceflinger does not necessarily use the GPU to do the composition. Usually there is a dedicated hardware block that does simple compositions, which will not use the GPU.
There is an option in Android that forces all composition to be done on the GPU rather than this hardware layer. If you want to confirm this is the case, try setting it and doing another capture and see if the values change.
Settings -> Developer Options -> Disable HW overlays (Always use GPU for screen compositing)
Kind Regards,
Michael McGeagh
Hi mcgeagh,
Thank you for your answer ! I had disable HWComposer, and the data i captured is during disabled HWComposer.
Also worth noting that the default "dedicated hardware block" on most devices is the display controller which normally has multi-layer support, so there may be no actual need to composite anything into a flattened buffer in memory.