Stefan Dösinger : wined3d: Prepare only fixed function samplers for blit.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Mar 1 05:59:45 CST 2007


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Mar  1 01:21:47 2007 +0100

wined3d: Prepare only fixed function samplers for blit.

---

 dlls/wined3d/context.c |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index d087a4c..6b00120 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -472,11 +472,13 @@ static inline void SetupForBlit(IWineD3DDeviceImpl *This, WineD3DContext *contex
         checkGLcall("glDisable(GL_REGISTER_COMBINERS_NV)");
     }
     if (GL_SUPPORT(ARB_MULTITEXTURE)) {
-        for(i = GL_LIMITS(samplers) - 1; i > 0 ; i--) {
-            if (GL_SUPPORT(ARB_MULTITEXTURE)) {
-                GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i));
-                checkGLcall("glActiveTextureARB");
-            }
+        /* The blitting code uses (for now) the fixed function pipeline, so make sure to reset all fixed
+         * function texture unit. No need to care for higher samplers
+         */
+        for(i = GL_LIMITS(textures) - 1; i > 0 ; i--) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i));
+            checkGLcall("glActiveTextureARB");
+
             glDisable(GL_TEXTURE_CUBE_MAP_ARB);
             checkGLcall("glDisable GL_TEXTURE_CUBE_MAP_ARB");
             glDisable(GL_TEXTURE_3D);
@@ -486,9 +488,10 @@ static inline void SetupForBlit(IWineD3DDeviceImpl *This, WineD3DContext *contex
             glDisable(GL_TEXTURE_1D);
             checkGLcall("glDisable GL_TEXTURE_1D");
 
-            if(i < MAX_TEXTURES) {
-                Context_MarkStateDirty(context, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP));
-            }
+            glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+            checkGLcall("glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);");
+
+            Context_MarkStateDirty(context, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP));
             Context_MarkStateDirty(context, STATE_SAMPLER(i));
         }
         GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB));




More information about the wine-cvs mailing list