Module: wine Branch: master Commit: 531ec2267b853710ee16fa8b922f98de8e40d565 URL: http://source.winehq.org/git/wine.git/?a=commit;h=531ec2267b853710ee16fa8b92...
Author: Stefan Dösinger stefan@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];