[PATCH 1/2] dxgi: Partially implement dxgi_adapter_CheckInterfaceSupport().

Józef Kucia jkucia at codeweavers.com
Sun Oct 11 20:17:22 CDT 2015


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
This patch assumes that wined3d returns resonable version numbers for User Mode Drivers
(atiumdag, igdumd, nvd3dum).
---
 dlls/dxgi/adapter.c      | 34 ++++++++++++++++++++++++++++++++--
 dlls/dxgi/dxgi_private.h |  1 +
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/dlls/dxgi/adapter.c b/dlls/dxgi/adapter.c
index 9a74935..365baf0 100644
--- a/dlls/dxgi/adapter.c
+++ b/dlls/dxgi/adapter.c
@@ -200,9 +200,39 @@ static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc(IDXGIAdapter1 *iface, DXGI
 static HRESULT STDMETHODCALLTYPE dxgi_adapter_CheckInterfaceSupport(IDXGIAdapter1 *iface,
         REFGUID guid, LARGE_INTEGER *umd_version)
 {
-    FIXME("iface %p, guid %s, umd_version %p stub!\n", iface, debugstr_guid(guid), umd_version);
+    struct dxgi_adapter *adapter = impl_from_IDXGIAdapter1(iface);
+    struct wined3d_adapter_identifier adapter_id;
+    HRESULT hr;
+
+    TRACE("iface %p, guid %s, umd_version %p.\n", iface, debugstr_guid(guid), umd_version);
+
+    /* This method works only for D3D10 interfaces. */
+    if (!(IsEqualGUID(guid, &IID_ID3D10Device)
+            || IsEqualGUID(guid, &IID_ID3D10Device1)))
+    {
+        WARN("Returning DXGI_ERROR_UNSUPPORTED for %s.\n", debugstr_guid(guid));
+        return DXGI_ERROR_UNSUPPORTED;
+    }
+
+    FIXME("Determine actual capabilities of adapter.\n");
 
-    return E_NOTIMPL;
+    if (umd_version)
+    {
+        adapter_id.driver_size = 0;
+        adapter_id.description_size = 0;
+        adapter_id.device_name_size = 0;
+
+        wined3d_mutex_lock();
+        hr = wined3d_get_adapter_identifier(adapter->parent->wined3d, adapter->ordinal, 0, &adapter_id);
+        wined3d_mutex_unlock();
+
+        if (FAILED(hr))
+            return hr;
+
+        *umd_version = adapter_id.driver_version;
+    }
+
+    return S_OK;
 }
 
 static const struct IDXGIAdapter1Vtbl dxgi_adapter_vtbl =
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h
index 035af74..b54f369 100644
--- a/dlls/dxgi/dxgi_private.h
+++ b/dlls/dxgi/dxgi_private.h
@@ -31,6 +31,7 @@
 #include "winnls.h"
 
 #include "dxgi.h"
+#include "d3d10_1.h"
 #ifdef DXGI_INIT_GUID
 #include "initguid.h"
 #endif
-- 
2.4.9




More information about the wine-patches mailing list