https://bugs.winehq.org/show_bug.cgi?id=31260
--- Comment #25 from andy andy86@fastwebnet.it --- I found part of source code that probability generate error output in terminal:
if (!(colorop == WINED3D_TOP_MODULATE && colorarg1 == WINED3DTA_TEXTURE && colorarg2 == WINED3DTA_CURRENT && alphaop == (tex_alpha ? WINED3D_TOP_SELECT_ARG1 : WINED3D_TOP_SELECT_ARG2) && alphaarg1 == WINED3DTA_TEXTURE && alphaarg2 == WINED3DTA_CURRENT)) ERR("Unexpected texture stage state setup, returning D3DTBLEND_MODULATE - likely erroneous.\n");
and that source file have this comment:
/* Note about D3DRENDERSTATE_TEXTUREMAPBLEND implementation: most of values for this state can be directly mapped to texture stage colorop and alphaop, but D3DTBLEND_MODULATE is tricky: it uses alpha from texture when available and alpha from diffuse otherwise. So changing the texture must be monitored in SetTexture to modify alphaarg when needed.
Aliens vs Predator 1 depends on accurate D3DTBLEND_MODULATE emulation
Legacy texture blending (TEXTUREMAPBLEND) and texture stage states: directx6 docs state that TEXTUREMAPBLEND is deprecated, yet can still be used. Games must not use both or results are undefined. D3DTBLEND_MODULATE mode in particular is dependent on texture pixel format and requires fixup of stage 0 texture states when texture changes, but this fixup can interfere with games not using this deprecated state. So a flag 'legacyTextureBlending' has to be kept in device - TRUE if the app is using TEXTUREMAPBLEND.
Tests show that setting TEXTUREMAPBLEND on native doesn't seem to change values returned by GetTextureStageState and vice versa. Not so on Wine, but it is 'undefined' anyway so, probably, ok, unless some broken game will be found that cares. */
i think this bug is right for this.