Wednesday, April 12, 2006, 4:02:58 PM, Ivan Gyurdiev wrote: > The point of this patch is to pull out things like modifier processing > (write masks, saturate, swizzle) from different case statements, and put > them in a more common path, which simplifies code, and makes sure we > don't miss cases. Also, reorder things as appropriate to get rid of the > crazy continue/switch flow control that's confusing me. Dead code paths > were also if0'ed.
> Patch introduces undesired effect that now input and output modifiers > are allowed on all instructions, which is definitely not valid according > to MSDN. However, I don't think we should care at this point, since > processing of valid shaders, and simplifying the code path should take > precedence. We can add validation later in a more appropriate place [ > the current "validation" is to completely disable or enable modifiers on > certain instructions, which is not correct either - and it should fail, > not just print a fixme on error ]. > Patch will enable processing _bx2 modifier on certain texture > instructions, which is valid in shaders 1.2/1.3. Also, is negation and > swizzling valid on texture instructions in 3.0? If it is, this will > process it. Also will enable write mask processing in some texture > instructions where it previously wasn't, generating more correct shader. I'm afraid this page changes too much at one go. You should split it into separate pieces. For example: > TRACE("Found opcode D3D:%s GL:%s, PARAMS:%d, \n", > - curOpcode->name, curOpcode->glname, > curOpcode->num_params); > + curOpcode->name, curOpcode->glname, > curOpcode->num_params - 1); should be one patch. Btw why are you adding -1 here? This could be turned into one big patch that is no-op: > /* Cubemap textures will be more used than 3D ones. */ > - sprintf(tmpLine, "TEX T%lu, TMP, texture[%lu], CUBE;\n", > reg, reg); > + sprintf(tmpLine, "TEX T%lu, TMP, texture[%lu], CUBE;\n", > output, output); Vitaliy Margolen