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