Currently the pipeline does a lot of context changes because
UpdateState(STATE_CHANGE) is used for both flushing the
vertex cache and disabling the current state, so in many
places where we only want to flush the vertex cache we
also disable the state just to have it re-enabled
for the next operation.
This leads to cases where for example for each blit we
set the source texture first to null and then back
to the source texture.
There is no need to do this for many cases like rect clip,
destination surface or transform changes.