Stefan Dösinger : wined3d: Allow filtering on RECT textures.

Alexandre Julliard julliard at winehq.org
Mon Aug 31 10:46:59 CDT 2009


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Sun Aug 30 21:38:53 2009 +0200

wined3d: Allow filtering on RECT textures.

There is no reason to disable linear filtering, we just cannot use mipmapping.

---

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

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index ea9431e..5e66f34 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -185,6 +185,14 @@ const struct min_lookup minMipLookup_noFilter[] =
     {{GL_NEAREST,   GL_NEAREST,                 GL_NEAREST}},               /* LINEAR */
 };
 
+const struct min_lookup minMipLookup_noMip[] =
+{
+    /* NONE         POINT                       LINEAR */
+    {{GL_NEAREST,   GL_NEAREST,                 GL_NEAREST}},               /* NONE */
+    {{GL_NEAREST,   GL_NEAREST,                 GL_NEAREST}},               /* POINT */
+    {{GL_LINEAR,    GL_LINEAR,                  GL_LINEAR }},               /* LINEAR */
+};
+
 const GLenum magLookup[] =
 {
     /* NONE     POINT       LINEAR */
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 8f0b980..dd8f32e 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -223,7 +223,15 @@ HRESULT texture_init(IWineD3DTextureImpl *texture, UINT width, UINT height, UINT
         texture->baseTexture.pow2Matrix[15] = 1.0f;
         texture->target = GL_TEXTURE_RECTANGLE_ARB;
         texture->cond_np2 = TRUE;
-        texture->baseTexture.minMipLookup = minMipLookup_noFilter;
+
+        if(texture->resource.format_desc->Flags & WINED3DFMT_FLAG_FILTERING)
+        {
+            texture->baseTexture.minMipLookup = minMipLookup_noMip;
+        }
+        else
+        {
+            texture->baseTexture.minMipLookup = minMipLookup_noFilter;
+        }
     }
     else
     {
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 8dbac4e..fefc540 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -178,6 +178,7 @@ struct min_lookup
 
 const struct min_lookup minMipLookup[WINED3DTEXF_LINEAR + 1];
 const struct min_lookup minMipLookup_noFilter[WINED3DTEXF_LINEAR + 1];
+const struct min_lookup minMipLookup_noMip[WINED3DTEXF_LINEAR + 1];
 const GLenum magLookup[WINED3DTEXF_LINEAR + 1];
 const GLenum magLookup_noFilter[WINED3DTEXF_LINEAR + 1];
 




More information about the wine-cvs mailing list