http://bugs.winehq.org/show_bug.cgi?id=29325
--- Comment #1 from Henri Verbeet hverbeet@gmail.com 2012-01-27 11:30:49 CST --- This happens because the application does several blits from a surface to the backbuffer, both of which have the WINED3DFMT_B8G8R8X8_UNORM format. Since we translate that format to an GL_RGB8 internal format and use GL_BGRA with GL_UNSIGNED_INT_8_8_8_8_REV for uploading, perhaps the driver ends up masking out the alpha channel during the upload, which would explain the performance hit. We may be able to fix that by using a GL_RGBA8 internal format instead and using EXT_texture_swizzle to force the alpha channel to 1 instead. It would be better if we could somehow determine that the source surface is safe to load into video memory and blit on the GPU instead, but I'm afraid ddraw might not give us enough information to make that decision in a reliable way.