Step 4) really comprises many small patches, and will often comprise the bulk of the patchset. It's important to make each commit atomic and useful. So, for example, adding a bunch of declarations that aren't used to a private header isn't useful, though it is atomic.
Hi Juan, while in principle I agree with what you say, in practice it is difficult for me to do this. The assembler requires quite some code to be at least minimally working (i.e. to implement a somewhat working D3DXAssembleShader function). This means that the first patch of step 4 will be really big. It will have as a starting point a merge of patch 1, 2, 3, 5, 6, 12, 15, which sums up to ~ 200KB. From there I will try to strip as much as possible (pixel shader support, some shader language constructs, single instructions, ...) but it seems to be quite a work and in any case the resulting patch needs to have a working lexer, parser, bytecode writer and the glue among them, so it can't be made smaller than so much, I believe. Anyway I'm going to try to rework the patches the way you suggest, we'll see what comes up...
Thanks, Matteo Bruni.