Roderick Colenbrander : wined3d: Add a function which checks the filtering capabilities for a format.

Alexandre Julliard julliard at winehq.org
Tue Mar 18 07:44:51 CDT 2008


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

Author: Roderick Colenbrander <thunderbird2k at gmx.net>
Date:   Mon Mar 17 19:27:24 2008 +0100

wined3d: Add a function which checks the filtering capabilities for a format.

---

 dlls/wined3d/directx.c |   57 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 9a281ea..7b90177 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1873,6 +1873,21 @@ WINED3DFORMAT DepthStencilFormat)
     return FALSE;
 }
 
+static BOOL CheckFilterCapability(WINED3DFORMAT CheckFormat)
+{
+    switch (CheckFormat) {
+        /* Filtering not supported */
+        case WINED3DFMT_R32F:
+        case WINED3DFMT_A32B32G32R32F:
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+        default:
+            break;
+    }
+
+    return TRUE;
+}
+
 /* Check the render target capabilities of a format */
 static BOOL CheckRenderTargetCapability(WINED3DFORMAT AdapterFormat, WINED3DFORMAT CheckFormat)
 {
@@ -2208,18 +2223,6 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
         return WINED3DERR_INVALIDCALL;
     }
 
-    if (Usage & WINED3DUSAGE_QUERY_FILTER) {
-        switch (CheckFormat) {
-            /* Filtering not supported */
-            case WINED3DFMT_R32F:
-            case WINED3DFMT_A32B32G32R32F:
-                TRACE_(d3d_caps)("[FAILED]\n");
-                return WINED3DERR_NOTAVAILABLE;
-            default:
-                break;
-        }
-    }
-
     if (Usage & WINED3DUSAGE_AUTOGENMIPMAP) {
         if(!GL_SUPPORT(SGIS_GENERATE_MIPMAP)) {
             TRACE_(d3d_caps)("[FAILED] - No mipmap generation support\n");
@@ -2252,6 +2255,16 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
                     }
                 }
 
+                /* Check QUERY_FILTER support */
+                if(Usage & WINED3DUSAGE_QUERY_FILTER) {
+                    if(CheckFilterCapability(CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_QUERY_FILTER;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No query filter support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+
                 /* Check QUERY_SRGBREAD support */
                 if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
                     if(CheckSrgbReadCapability(Adapter, CheckFormat)) {
@@ -2324,6 +2337,16 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
                  }
             }
 
+            /* Check QUERY_FILTER support */
+            if(Usage & WINED3DUSAGE_QUERY_FILTER) {
+                if(CheckFilterCapability(CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_FILTER;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query filter support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
             /* Check QUERY_LEGACYBUMPMAP support */
             if(Usage & WINED3DUSAGE_QUERY_LEGACYBUMPMAP) {
                 if(CheckBumpMapCapability(Adapter, CheckFormat)) {
@@ -2365,6 +2388,16 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
                 return WINED3DERR_NOTAVAILABLE;
             }
 
+            /* Check QUERY_FILTER support */
+            if(Usage & WINED3DUSAGE_QUERY_FILTER) {
+                if(CheckFilterCapability(CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_FILTER;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query filter support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
             /* Check QUERY_SRGBREAD support */
             if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
                 if(CheckSrgbReadCapability(Adapter, CheckFormat)) {




More information about the wine-cvs mailing list