Stefan Dösinger : ddraw: Get some texture stage states from their equivalent sampler states.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jan 10 15:47:10 CST 2007


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Wed Jan 10 11:29:55 2007 +0100

ddraw: Get some texture stage states from their equivalent sampler states.

---

 dlls/ddraw/device.c |   46 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 4ba3154..62cfa50 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -3975,10 +3975,48 @@ IDirect3DDeviceImpl_7_GetTextureStageSta
     if(!State)
         return DDERR_INVALIDPARAMS;
 
-    return IWineD3DDevice_GetTextureStageState(This->wineD3DDevice,
-                                               Stage,
-                                               TexStageStateType,
-                                               State);
+    switch(TexStageStateType)
+    {
+        /* Mipfilter is a sampler state with different values */
+        case D3DTSS_MIPFILTER:
+        {
+            HRESULT hr;
+            WINED3DTEXTUREFILTERTYPE value;
+
+            hr = IWineD3DDevice_GetSamplerState(This->wineD3DDevice,
+                                                Stage,
+                                                WINED3DSAMP_MIPFILTER,
+                                                &value);
+            switch(value)
+            {
+                case WINED3DTEXF_NONE: *State = D3DTFP_NONE; break;
+                case WINED3DTEXF_POINT: *State = D3DTFP_POINT; break;
+                case WINED3DTEXF_LINEAR: *State = D3DTFP_LINEAR; break;
+                default:
+                    ERR("Unexpected mipfilter value %d\n", value);
+                    *State = D3DTFP_NONE;
+            }
+            return hr;
+        }
+
+        /* Minfilter is a sampler state too, equal values */
+        case D3DTSS_MINFILTER:
+            return IWineD3DDevice_GetSamplerState(This->wineD3DDevice,
+                                                  Stage,
+                                                  WINED3DSAMP_MINFILTER,
+                                                  State);
+        /* Same for MAGFILTER */
+        case D3DTSS_MAGFILTER:
+            return IWineD3DDevice_GetSamplerState(This->wineD3DDevice,
+                                                  Stage,
+                                                  WINED3DSAMP_MAGFILTER,
+                                                  State);
+        default:
+            return IWineD3DDevice_GetTextureStageState(This->wineD3DDevice,
+                                                    Stage,
+                                                    TexStageStateType,
+                                                    State);
+    }
 }
 
 static HRESULT WINAPI




More information about the wine-cvs mailing list