I was trying to google and understand my problem in two weeks but i am defeated, so i am asking for help.
The main problem is that my custom unlit frag shader after certain amount of time on devices with mali gpu starts to drop fps - i see it via fps counter in the cpu section. I dont know why in that section and not in render section, but with out this fps counter i can still feel the drop of fps.
So on Samsung S4, Samsung sm-t 380, xiaomi redmi note 5, samsung tab s2 is all ok, the drop was only on samsung s6 - to solve the problem i just half the resolution by Screen.SetResolution function.
I was thinking that drawing the full screen sprite on such a high res device is the point. Then i can test app on samsung sm-t580 - and the drop was there - this device has low resolution than S6.
I assume that the problem in arm mali gpu - or i am sure in my hands.
So again, i am rendering full-screen with draw-mode = tile(countinuous) sprite with 3 textures, just changing theirs uvs in vert func and apply in fragment. This makes distorting effect. The shader show that i have 10 maths and 4 textures, yes 3 textures but i am making 4 sampling.
The textures are 256x256 with repeat mode. I was trying diferrent textures compressions, dxt5, etc1-2, alpha8, R5 - no effect.
I was trying to different precisions half and float in different parts in shader - no effect.
I was thinking in alpha, so i took textures without alpha and not getting it from tex2D. Even the size of textures is doesnt matter, even if they 64x64.
The dance with ZTest, ZWrite, Blend, Queue RenderType, other params - no effect.
My guess was that maybe on mali uv : TEXCOORD0 must be only float2, not float3 or float4 - no effect.
I am applying _Time.y and replace it with float from script - no effect.
Only reducing amount of tex2d in shader - is working. Why?
What i`m doing wrong?