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.
Yes, you're right, I missed that it's in a chain of draw transform -> transform -> transformnode. MSDN is broken there, it says interface> 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? inherits from IUnknown. That's why I thought it's something special.
I think there are options still, effect can use SetSingleTransformNode to add it explicitly, but I believe I saw examples somewhere that don't do it, so maybe it's handled by d2d itself. I could be wrong of course.
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?
Please do. We should start with single node graph first to get something render first, and have inputs/outputs behaving correctly. I think doing multiple nodes processing in naive way, by drawing each intermediate step, is likely to be a performance problem.