Henri Verbeet : wined3d: Get rid of the ANISOTROPIC entry from the filter lookup tables.

Alexandre Julliard julliard at winehq.org
Wed Aug 5 09:47:59 CDT 2009


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Aug  5 09:01:02 2009 +0200

wined3d: Get rid of the ANISOTROPIC entry from the filter lookup tables.

Anisotropy and texture filters are orthogonal in GL. In D3D
D3DTEXF_ANISOTROPIC just selects the best (linear) filter type and enables
anisotropy.

---

 dlls/wined3d/basetexture.c     |   20 ++++++++++----------
 dlls/wined3d/directx.c         |   10 ++++------
 dlls/wined3d/wined3d_private.h |    8 ++++----
 3 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/dlls/wined3d/basetexture.c b/dlls/wined3d/basetexture.c
index 2970108..a8e5228 100644
--- a/dlls/wined3d/basetexture.c
+++ b/dlls/wined3d/basetexture.c
@@ -388,12 +388,12 @@ void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
         if (state > WINED3DTEXF_ANISOTROPIC) {
             FIXME("Unrecognized or unsupported MAGFILTER* value %d\n", state);
         }
-        else
-        {
-            glValue = wined3d_gl_mag_filter(This->baseTexture.magLookup, state);
-            TRACE("ValueMAG=%d setting MAGFILTER to %x\n", state, glValue);
-            glTexParameteri(textureDimensions, GL_TEXTURE_MAG_FILTER, glValue);
-        }
+
+        glValue = wined3d_gl_mag_filter(This->baseTexture.magLookup,
+                min(max(state, WINED3DTEXF_POINT), WINED3DTEXF_LINEAR));
+        TRACE("ValueMAG=%d setting MAGFILTER to %x\n", state, glValue);
+        glTexParameteri(textureDimensions, GL_TEXTURE_MAG_FILTER, glValue);
+
         states[WINED3DTEXSTA_MAGFILTER] = state;
     }
 
@@ -406,8 +406,8 @@ void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
         states[WINED3DTEXSTA_MINFILTER] = samplerStates[WINED3DSAMP_MINFILTER];
         states[WINED3DTEXSTA_MAXMIPLEVEL] = samplerStates[WINED3DSAMP_MAXMIPLEVEL];
 
-        if (states[WINED3DTEXSTA_MINFILTER] > WINED3DTEXF_ANISOTROPIC ||
-            states[WINED3DTEXSTA_MIPFILTER] > WINED3DTEXF_LINEAR)
+        if (states[WINED3DTEXSTA_MINFILTER] > WINED3DTEXF_ANISOTROPIC
+                || states[WINED3DTEXSTA_MIPFILTER] > WINED3DTEXF_ANISOTROPIC)
         {
 
             FIXME("Unrecognized or unsupported D3DSAMP_MINFILTER value %d D3DSAMP_MIPFILTER value %d\n",
@@ -415,8 +415,8 @@ void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
                   states[WINED3DTEXSTA_MIPFILTER]);
         }
         glValue = wined3d_gl_min_mip_filter(This->baseTexture.minMipLookup,
-                min(max(samplerStates[WINED3DSAMP_MINFILTER],WINED3DTEXF_NONE), WINED3DTEXF_ANISOTROPIC),
-                min(max(samplerStates[WINED3DSAMP_MIPFILTER],WINED3DTEXF_NONE), WINED3DTEXF_LINEAR));
+                min(max(samplerStates[WINED3DSAMP_MINFILTER], WINED3DTEXF_NONE), WINED3DTEXF_LINEAR),
+                min(max(samplerStates[WINED3DSAMP_MIPFILTER], WINED3DTEXF_NONE), WINED3DTEXF_LINEAR));
 
         TRACE("ValueMIN=%d, ValueMIP=%d, setting MINFILTER to %x\n",
               samplerStates[WINED3DSAMP_MINFILTER],
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 8e5e08c..7be5f44 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -174,7 +174,6 @@ const struct min_lookup minMipLookup[] =
     {{GL_LINEAR,    GL_LINEAR,                  GL_LINEAR}},                /* NONE */
     {{GL_NEAREST,   GL_NEAREST_MIPMAP_NEAREST,  GL_NEAREST_MIPMAP_LINEAR}}, /* POINT*/
     {{GL_LINEAR,    GL_LINEAR_MIPMAP_NEAREST,   GL_LINEAR_MIPMAP_LINEAR}},  /* LINEAR */
-    {{GL_LINEAR,    GL_LINEAR_MIPMAP_NEAREST,   GL_LINEAR_MIPMAP_LINEAR}},  /* ANISOTROPIC */
 };
 
 const struct min_lookup minMipLookup_noFilter[] =
@@ -183,19 +182,18 @@ const struct min_lookup minMipLookup_noFilter[] =
     {{GL_NEAREST,   GL_NEAREST,                 GL_NEAREST}},               /* NONE */
     {{GL_NEAREST,   GL_NEAREST,                 GL_NEAREST}},               /* POINT */
     {{GL_NEAREST,   GL_NEAREST,                 GL_NEAREST}},               /* LINEAR */
-    {{GL_NEAREST,   GL_NEAREST,                 GL_NEAREST}},               /* ANISOTROPIC */
 };
 
 const GLenum magLookup[] =
 {
-    /* NONE     POINT       LINEAR      ANISOTROPIC */
-    GL_NEAREST, GL_NEAREST, GL_LINEAR,  GL_LINEAR,
+    /* NONE     POINT       LINEAR */
+    GL_NEAREST, GL_NEAREST, GL_LINEAR,
 };
 
 const GLenum magLookup_noFilter[] =
 {
-    /* NONE     POINT       LINEAR      ANISOTROPIC */
-    GL_NEAREST, GL_NEAREST, GL_NEAREST, GL_NEAREST,
+    /* NONE     POINT       LINEAR */
+    GL_NEAREST, GL_NEAREST, GL_NEAREST,
 };
 
 /* drawStridedSlow attributes */
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 9852196..c83ee20 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -176,10 +176,10 @@ struct min_lookup
     GLenum mip[WINED3DTEXF_LINEAR + 1];
 };
 
-const struct min_lookup minMipLookup[WINED3DTEXF_ANISOTROPIC + 1];
-const struct min_lookup minMipLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1];
-const GLenum magLookup[WINED3DTEXF_ANISOTROPIC + 1];
-const GLenum magLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1];
+const struct min_lookup minMipLookup[WINED3DTEXF_LINEAR + 1];
+const struct min_lookup minMipLookup_noFilter[WINED3DTEXF_LINEAR + 1];
+const GLenum magLookup[WINED3DTEXF_LINEAR + 1];
+const GLenum magLookup_noFilter[WINED3DTEXF_LINEAR + 1];
 
 static inline GLenum wined3d_gl_mag_filter(const GLenum mag_lookup[], WINED3DTEXTUREFILTERTYPE mag_filter)
 {




More information about the wine-cvs mailing list