[1/6] WineD3D: Prepare only fixed function samplers for blit
Stefan Dösinger
stefan at codeweavers.com
Wed Feb 28 18:46:42 CST 2007
Same patch as yesterday, but now uses GL_LIMITS(textures) as suggested by
Henri
-------------- next part --------------
From ab95f509a1eba25f7759cb3aea243aaf225d1b5c Mon Sep 17 00:00:00 2001
From: Stefan Doesinger <stefan at codeweavers.com>
Date: Thu, 1 Mar 2007 01:21:47 +0100
Subject: [PATCH] WineD3D: Prepare only fixed function samplers for blit
First I thought it is a driver bug, but the macos ATI driver is perfectly right when it complains that it can't
glDisable(GL_TEXTURE_2D) on unit 8+. This is only a fixed function thing. The higher samplers aren't interesting for the blitting
code, so do not touch them.
---
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));
--
1.4.4.3
More information about the wine-patches
mailing list