Node manipulation might be fine, I haven't checked it in full. However my impression was that we don't really need it right now? I believe I saw some examples where ID2D1DrawTransform is implemented for *Impl object directly, for which runtime presumably calls SetDrawInfo, letting effect set back shaders and resources.
Yeah, ID2D1DrawTransform can be implemented for *Impl object, that's true. But we still need transfrom graph. Implementing ID2D1DrawTransform for *Impl doesn't means that it will be used automatically without doing anything else. We still need to regard it as a transform node, and add it to transfrom graph. And latter, runtime will call SetDrawInfo for it because it is in transform graph.
Regarding prototyped drawing, creating render target on every draw seems wrong. It's possible you'll have to recreate something, but only when when parameters or inputs have changed.
You are right. We should recreate things only when things are changed. I ignore it in this draft just to make things look simpler. I'll take this into consideration.
Nikolay, do you think I can submit first 3 patches in another MR to make you have a full reviewing in order to upstream them?