[PATCH 6/6] wined3d: Statically initialize the filter lookup tables.
Henri Verbeet
hverbeet at codeweavers.com
Tue Aug 4 01:30:25 CDT 2009
Also add some comments.
---
dlls/wined3d/directx.c | 53 ++++++++++++++++++----------------------
dlls/wined3d/wined3d_private.h | 4 +-
2 files changed, 26 insertions(+), 31 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index f9fb6b1..fc8fa61 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -168,19 +168,34 @@ const int maxLookup[MAX_LOOKUPS] =
DWORD *stateLookup[MAX_LOOKUPS];
-struct min_lookup minMipLookup[WINED3DTEXF_ANISOTROPIC + 1];
-const struct min_lookup minMipLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1] =
+const struct min_lookup minMipLookup[] =
{
- {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
- {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
- {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
- {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
+ /* NONE POINT LINEAR */
+ {{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 */
};
-GLenum magLookup[WINED3DTEXF_ANISOTROPIC + 1];
-const GLenum magLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1] =
+const struct min_lookup minMipLookup_noFilter[] =
{
- GL_NEAREST, GL_NEAREST, GL_NEAREST, GL_NEAREST
+ /* NONE POINT LINEAR */
+ {{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,
+};
+
+const GLenum magLookup_noFilter[] =
+{
+ /* NONE POINT LINEAR ANISOTROPIC */
+ GL_NEAREST, GL_NEAREST, GL_NEAREST, GL_NEAREST,
};
/* drawStridedSlow attributes */
@@ -1991,26 +2006,6 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_gl_info *gl_info)
stateLookup[WINELOOKUP_WARPPARAM][WINED3DTADDRESS_MIRRORONCE - minLookup[WINELOOKUP_WARPPARAM]] =
gl_info->supported[ATI_TEXTURE_MIRROR_ONCE] ? GL_MIRROR_CLAMP_TO_EDGE_ATI : GL_REPEAT;
- magLookup[WINED3DTEXF_NONE - WINED3DTEXF_NONE] = GL_NEAREST;
- magLookup[WINED3DTEXF_POINT - WINED3DTEXF_NONE] = GL_NEAREST;
- magLookup[WINED3DTEXF_LINEAR - WINED3DTEXF_NONE] = GL_LINEAR;
- magLookup[WINED3DTEXF_ANISOTROPIC - WINED3DTEXF_NONE] = GL_LINEAR;
-
- minMipLookup[WINED3DTEXF_NONE].mip[WINED3DTEXF_NONE] = GL_LINEAR;
- minMipLookup[WINED3DTEXF_NONE].mip[WINED3DTEXF_POINT] = GL_LINEAR;
- minMipLookup[WINED3DTEXF_NONE].mip[WINED3DTEXF_LINEAR] = GL_LINEAR;
- minMipLookup[WINED3DTEXF_POINT].mip[WINED3DTEXF_NONE] = GL_NEAREST;
- minMipLookup[WINED3DTEXF_POINT].mip[WINED3DTEXF_POINT] = GL_NEAREST_MIPMAP_NEAREST;
- minMipLookup[WINED3DTEXF_POINT].mip[WINED3DTEXF_LINEAR] = GL_NEAREST_MIPMAP_LINEAR;
- minMipLookup[WINED3DTEXF_LINEAR].mip[WINED3DTEXF_NONE] = GL_LINEAR;
- minMipLookup[WINED3DTEXF_LINEAR].mip[WINED3DTEXF_POINT] = GL_LINEAR_MIPMAP_NEAREST;
- minMipLookup[WINED3DTEXF_LINEAR].mip[WINED3DTEXF_LINEAR] = GL_LINEAR_MIPMAP_LINEAR;
- minMipLookup[WINED3DTEXF_ANISOTROPIC].mip[WINED3DTEXF_NONE] = GL_LINEAR;
- minMipLookup[WINED3DTEXF_ANISOTROPIC].mip[WINED3DTEXF_POINT] = GL_LINEAR_MIPMAP_NEAREST;
- minMipLookup[WINED3DTEXF_ANISOTROPIC].mip[WINED3DTEXF_LINEAR] = GL_LINEAR_MIPMAP_LINEAR;
-
-/* TODO: config lookups */
-
/* Make sure there's an active HDC else the WGL extensions will fail */
hdc = pwglGetCurrentDC();
if (hdc) {
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 1a3314a..bb8aae8 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -176,9 +176,9 @@ struct min_lookup
GLenum mip[WINED3DTEXF_LINEAR + 1];
};
-struct min_lookup minMipLookup[WINED3DTEXF_ANISOTROPIC + 1];
+const struct min_lookup minMipLookup[WINED3DTEXF_ANISOTROPIC + 1];
const struct min_lookup minMipLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1];
-GLenum magLookup[WINED3DTEXF_ANISOTROPIC + 1];
+const GLenum magLookup[WINED3DTEXF_ANISOTROPIC + 1];
const GLenum magLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1];
extern const struct filter_lookup filter_lookup_nofilter;
--
1.6.0.6
More information about the wine-patches
mailing list