When we meets a new shader program in shape_context_push(),
it loads a shader binary, if it is necessary, create a new program for the shader.
In this step, the current program state could changed to this new one.
But still our gl context by shader_flush() could keep the previous program for next shader flush.
But it doens't know current program was changed by dropping by.
Here is a simple scenario:
This image requires Program A. it calls evas_gl_common_context_push() internally.
then shader_array_flush() instantly.
It stores the current context including shader program(Program A)
xxx draws first time, it loads a new shader program.
Now this changed the current program to a new instant one.
draw image which requires Prorgam A (No.1).
Unfortunately, stored context is same to this.
So, it skips some gl context setting including shader program.