[v2 PATCH 2/2] dxgi: Add partial implementation for dxgi_adapter_GetDesc2() and dxgi_adapter_GetDesc3().

Nikolay Sivov nsivov at codeweavers.com
Wed Oct 24 00:22:03 CDT 2018


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/dxgi/adapter.c | 57 ++++++++++++++++++++++++++++++++++-----------
 1 file changed, 43 insertions(+), 14 deletions(-)

diff --git a/dlls/dxgi/adapter.c b/dlls/dxgi/adapter.c
index a913870319..b96904e90c 100644
--- a/dlls/dxgi/adapter.c
+++ b/dlls/dxgi/adapter.c
@@ -147,18 +147,12 @@ static HRESULT STDMETHODCALLTYPE dxgi_adapter_EnumOutputs(IWineDXGIAdapter *ifac
     return S_OK;
 }
 
-static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc1(IWineDXGIAdapter *iface, DXGI_ADAPTER_DESC1 *desc)
+static HRESULT dxgi_adapter_get_desc(struct dxgi_adapter *adapter, DXGI_ADAPTER_DESC3 *desc)
 {
-    struct dxgi_adapter *adapter = impl_from_IWineDXGIAdapter(iface);
     struct wined3d_adapter_identifier adapter_id;
     char description[128];
     HRESULT hr;
 
-    TRACE("iface %p, desc %p.\n", iface, desc);
-
-    if (!desc)
-        return E_INVALIDARG;
-
     adapter_id.driver_size = 0;
     adapter_id.description = description;
     adapter_id.description_size = sizeof(description);
@@ -187,13 +181,16 @@ static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc1(IWineDXGIAdapter *iface,
     desc->SharedSystemMemory = 0; /* FIXME */
     desc->AdapterLuid = adapter_id.adapter_luid;
     desc->Flags = 0;
+    desc->GraphicsPreemptionGranularity = 0; /* FIXME */
+    desc->ComputePreemptionGranularity = 0; /* FIXME */
 
     return hr;
 }
 
 static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc(IWineDXGIAdapter *iface, DXGI_ADAPTER_DESC *desc)
 {
-    DXGI_ADAPTER_DESC1 desc1;
+    struct dxgi_adapter *adapter = impl_from_IWineDXGIAdapter(iface);
+    DXGI_ADAPTER_DESC3 desc3;
     HRESULT hr;
 
     TRACE("iface %p, desc %p.\n", iface, desc);
@@ -201,8 +198,8 @@ static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc(IWineDXGIAdapter *iface, D
     if (!desc)
         return E_INVALIDARG;
 
-    if (SUCCEEDED(hr = dxgi_adapter_GetDesc1(iface, &desc1)))
-        memcpy(desc, &desc1, sizeof(*desc));
+    if (SUCCEEDED(hr = dxgi_adapter_get_desc(adapter, &desc3)))
+        memcpy(desc, &desc3, sizeof(*desc));
 
     return hr;
 }
@@ -249,11 +246,38 @@ static HRESULT STDMETHODCALLTYPE dxgi_adapter_CheckInterfaceSupport(IWineDXGIAda
     return S_OK;
 }
 
+static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc1(IWineDXGIAdapter *iface, DXGI_ADAPTER_DESC1 *desc)
+{
+    struct dxgi_adapter *adapter = impl_from_IWineDXGIAdapter(iface);
+    DXGI_ADAPTER_DESC3 desc3;
+    HRESULT hr;
+
+    TRACE("iface %p, desc %p.\n", iface, desc);
+
+    if (!desc)
+        return E_INVALIDARG;
+
+    if (SUCCEEDED(hr = dxgi_adapter_get_desc(adapter, &desc3)))
+        memcpy(desc, &desc3, sizeof(*desc));
+
+    return hr;
+}
+
 static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc2(IWineDXGIAdapter *iface, DXGI_ADAPTER_DESC2 *desc)
 {
-    FIXME("iface %p, desc %p stub!\n", iface, desc);
+    struct dxgi_adapter *adapter = impl_from_IWineDXGIAdapter(iface);
+    DXGI_ADAPTER_DESC3 desc3;
+    HRESULT hr;
 
-    return E_NOTIMPL;
+    TRACE("iface %p, desc %p.\n", iface, desc);
+
+    if (!desc)
+        return E_INVALIDARG;
+
+    if (SUCCEEDED(hr = dxgi_adapter_get_desc(adapter, &desc3)))
+        memcpy(desc, &desc3, sizeof(*desc));
+
+    return hr;
 }
 
 static HRESULT STDMETHODCALLTYPE dxgi_adapter_RegisterHardwareContentProtectionTeardownStatusEvent(
@@ -304,9 +328,14 @@ static void STDMETHODCALLTYPE dxgi_adapter_UnregisterVideoMemoryBudgetChangeNoti
 
 static HRESULT STDMETHODCALLTYPE dxgi_adapter_GetDesc3(IWineDXGIAdapter *iface, DXGI_ADAPTER_DESC3 *desc)
 {
-    FIXME("iface %p, desc %p stub!\n", iface, desc);
+    struct dxgi_adapter *adapter = impl_from_IWineDXGIAdapter(iface);
 
-    return E_NOTIMPL;
+    TRACE("iface %p, desc %p.\n", iface, desc);
+
+    if (!desc)
+        return E_INVALIDARG;
+
+    return dxgi_adapter_get_desc(adapter, desc);
 }
 
 static const struct IWineDXGIAdapterVtbl dxgi_adapter_vtbl =
-- 
2.19.1




More information about the wine-devel mailing list