Sebastian Aaltonen on Twitter

“Thus our solution for fast rendering on low/mid tier Android phones (50% of the market today) is to lean on traditional draw calls. Make draw calls as fast as possible on both CPU and GPU side. Well optimized solution can push 10,000 draw calls at 60 fps on 99$ Android phone.”

Twitter
@StompyRobot Yeah, wish we could convince @sebbbi to join us. His posts are one of the few reasons why I still lurk there once in a while.
@StompyRobot @sebbbi To add something useful to that thread: I think position shaders were first introduced by nvidia on Fermi, much earlier than Intel Xe! It was completely transparent and I don't think it was advertised much, so most devs were unaware of it.
@castano @StompyRobot IIRC Qualcomm had POSH very early too.
@sebbbi @castano @StompyRobot yeah Qualcomm had a separate “position only” shader pass just for binning “forever” by now. Since Adreno 4xx (2009) or similar
@aras @sebbbi @castano @StompyRobot yeah on Adreno I believe it was around 2014 or so with the 4xx series & with Mali it was first introduced with the Mali-G71 when they added their IDVS pipeline.
@castano @StompyRobot @sebbbi I'm happy to see a confirmation because I was at the internal Fermi architecture orientation at NVIDIA but left shortly thereafter, and I could have sworn I remembered transparent position shaders being presented. But when I Googled around for it much later there wasn't anyone who seemed to know it existed, so I thought I might have hallucinated it.
@castano @StompyRobot @sebbbi I believe it had to re-run the whole shader after cull/clip except for the code that only contributed to the position. So there was a potential performance degradation with an extremely heavy vertex shader that computes an intermediate result which then feeds into both position and non-position attributes.
@castano @StompyRobot @sebbbi We also did this in LRB FWIW.
@castano @StompyRobot The default path was for only positions + clip/cull dists to get evaluated for binning/FE work, and then attribute shading was way back in the backend (in "VPhase" _after_ rast and Z test [as long as early Z was on])
@castano @StompyRobot in particular verts only contained in tris that fully failed the depth/stencil tests never got shaded at all