[PATCH] WineD3D: override the default filter of conditional np2 =

Stefan Doesinger stefan at codeweavers.com
Wed Aug 13 12:55:53 CDT 2008


textures=0A=
=0A=
---=0A=
 dlls/wined3d/texture.c |   12 ++++++++++--=0A=
 1 files changed, 10 insertions(+), 2 deletions(-)=0A=
=0A=
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c=0A=
index 35dfcae..bd83541 100644=0A=
--- a/dlls/wined3d/texture.c=0A=
+++ b/dlls/wined3d/texture.c=0A=
@@ -229,17 +229,25 @@ static HRESULT WINAPI =
IWineD3DTextureImpl_BindTexture(IWineD3DTexture *iface) {=0A=
         }=0A=
         /* Conditinal non power of two textures use a different =
clamping default. If we're using the GL_WINE_normalized_texrect=0A=
          * partial driver emulation, we're dealing with a GL_TEXTURE_2D =
texture which has the address mode set to repeat - something=0A=
-         * that prevents us from hitting the accelerated codepath. Thus =
manually set the GL state=0A=
+         * that prevents us from hitting the accelerated codepath. Thus =
manually set the GL state. The same applies to filtering.=0A=
+         * Even if the texture has only one mip level, the default =
LINEAR_MIPMAP_LINEAR filter causes a SW fallback on macos.=0A=
          */=0A=
         if(IWineD3DBaseTexture_IsCondNP2(iface)) {=0A=
             ENTER_GL();=0A=
             =
glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), =
GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);=0A=
             checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_S, =
GL_CLAMP_TO_EDGE)");=0A=
             =
glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), =
GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);=0A=
-            checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_S, =
GL_CLAMP_TO_EDGE)");=0A=
+            checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_T, =
GL_CLAMP_TO_EDGE)");=0A=
+            =
glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), =
GL_TEXTURE_MIN_FILTER, GL_NEAREST);=0A=
+            checkGLcall("glTexParameteri(dimension, =
GL_TEXTURE_MIN_FILTER, GL_NEAREST)");=0A=
+            =
glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), =
GL_TEXTURE_MAG_FILTER, GL_NEAREST);=0A=
+            checkGLcall("glTexParameteri(dimension, =
GL_TEXTURE_MAG_FILTER, GL_NEAREST)");=0A=
             LEAVE_GL();=0A=
             This->baseTexture.states[WINED3DTEXSTA_ADDRESSU]      =3D =
WINED3DTADDRESS_CLAMP;=0A=
             This->baseTexture.states[WINED3DTEXSTA_ADDRESSV]      =3D =
WINED3DTADDRESS_CLAMP;=0A=
+            This->baseTexture.states[WINED3DTEXSTA_MAGFILTER]     =3D =
WINED3DTEXF_POINT;=0A=
+            This->baseTexture.states[WINED3DTEXSTA_MINFILTER]     =3D =
WINED3DTEXF_POINT;=0A=
+            This->baseTexture.states[WINED3DTEXSTA_MIPFILTER]     =3D =
WINED3DTEXF_NONE;=0A=
         }=0A=
     }=0A=
 =0A=
-- =0A=
1.5.6.4=0A=
=0A=

------=_NextPart_000_0024_01C9046F.94792CA0--




More information about the wine-patches mailing list