Hi,
If you make those into arrays you will be able to cut down on the code size, and the compiler might like it better.
While I didn't notice any speedups in the code itself, it's a bit cleaner (especially the format table) now, thanks! (Come to think about it, it wouldn't have made much sense to talk about red masks for luminance formats)
I think it would be better to store this in surface.c since I can't think of anything else that would need this.
D3DXCheckTextureRequirements in texture.c will make use of the format table, since it also needs information about bits per component and component ordering.