Is this "color shifting" the same as RGB channel depth promotion doing texture lookups?
Example: if the render target is 888 and the texture is 565 RGB format then the hardware will promote the bits like this:

destination R [7:0] <- source (R4, R3, R2, R1, R0, R4, R3, R2)