H. Verbeet : wined3d: In tex_colorop() & tex_alphaop(), only check the mapped stage against GL_LIMITS(textures) if the texture is used.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 2 09:52:08 CDT 2007


Module: wine
Branch: master
Commit: 6421d45f53543788014e6ba16a6ee1b558ae777d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6421d45f53543788014e6ba16a6ee1b558ae777d

Author: H. Verbeet <hverbeet at gmail.com>
Date:   Sun Jul  1 23:41:47 2007 +0200

wined3d: In tex_colorop() & tex_alphaop(), only check the mapped stage against GL_LIMITS(textures) if the texture is used.

---

 dlls/wined3d/state.c |   15 +++++----------
 1 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 8223e30..fbd0cd3 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -1672,11 +1672,8 @@ static void tex_colorop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3D
 
     if (mapped_stage != -1) {
         if (GL_SUPPORT(ARB_MULTITEXTURE)) {
-            if (mapped_stage >= GL_LIMITS(textures)) {
-                if (stateblock->textureState[stage][WINED3DTSS_COLOROP] != WINED3DTOP_DISABLE &&
-                        stateblock->textureState[stage][WINED3DTSS_COLOROP] != 0) {
-                    FIXME("Attempt to enable unsupported stage!\n");
-                }
+            if (tex_used && mapped_stage >= GL_LIMITS(textures)) {
+                FIXME("Attempt to enable unsupported stage!\n");
                 return;
             }
             GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
@@ -1758,17 +1755,15 @@ static void tex_colorop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3D
 static void tex_alphaop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
     DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
     DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[stage];
+    BOOL tex_used = stateblock->wineD3DDevice->fixed_function_usage_map[stage];
     DWORD op, arg1, arg2, arg0;
 
     TRACE("Setting alpha op for stage %d\n", stage);
     /* Do not care for enabled / disabled stages, just assign the settigns. colorop disables / enables required stuff */
     if (mapped_stage != -1) {
         if (GL_SUPPORT(ARB_MULTITEXTURE)) {
-            if (stage >= GL_LIMITS(textures)) {
-                if (stateblock->textureState[stage][WINED3DTSS_COLOROP] != WINED3DTOP_DISABLE &&
-                        stateblock->textureState[stage][WINED3DTSS_COLOROP] != 0) {
-                    FIXME("Attempt to enable unsupported stage!\n");
-                }
+            if (tex_used && mapped_stage >= GL_LIMITS(textures)) {
+                FIXME("Attempt to enable unsupported stage!\n");
                 return;
             }
             GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));




More information about the wine-cvs mailing list