[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