[PATCH vkd3d v2 1/6] tests: Print adapter info on Windows.

Józef Kucia joseph.kucia at gmail.com
Mon Dec 3 04:31:26 CST 2018


From: Józef Kucia <jkucia at codeweavers.com>

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---

Version 2:
* Fix formatting.
* Merge #ifdef blocks.

---
 include/vkd3d_dxgi.idl | 26 +++++++++++++++++++++++++-
 tests/d3d12.c          | 29 +++++++++++++++++++++++++++--
 2 files changed, 52 insertions(+), 3 deletions(-)

diff --git a/include/vkd3d_dxgi.idl b/include/vkd3d_dxgi.idl
index 5b80e1f6c3f4..7e07a78dd365 100644
--- a/include/vkd3d_dxgi.idl
+++ b/include/vkd3d_dxgi.idl
@@ -38,7 +38,6 @@ typedef enum DXGI_MODE_ROTATION
     DXGI_MODE_ROTATION_ROTATE270   = 0x4,
 } DXGI_MODE_ROTATION;
 
-interface IDXGIAdapter;
 interface IDXGIAdapter1;
 interface IDXGIOutput;
 typedef struct DXGI_SWAP_CHAIN_DESC DXGI_SWAP_CHAIN_DESC;
@@ -54,6 +53,19 @@ const DXGI_USAGE DXGI_USAGE_READ_ONLY            = 0x00000100ul;
 const DXGI_USAGE DXGI_USAGE_DISCARD_ON_PRESENT   = 0x00000200ul;
 const DXGI_USAGE DXGI_USAGE_UNORDERED_ACCESS     = 0x00000400ul;
 
+typedef struct DXGI_ADAPTER_DESC
+{
+    WCHAR Description[128];
+    UINT VendorId;
+    UINT DeviceId;
+    UINT SubSysId;
+    UINT Revision;
+    SIZE_T DedicatedVideoMemory;
+    SIZE_T DedicatedSystemMemory;
+    SIZE_T SharedSystemMemory;
+    LUID AdapterLuid;
+} DXGI_ADAPTER_DESC;
+
 [
     local,
     object,
@@ -79,6 +91,18 @@ interface IDXGIDeviceSubObject : IDXGIObject
     HRESULT GetDevice(REFIID riid, void **device);
 }
 
+[
+    object,
+    local,
+    uuid(2411e7e1-12ac-4ccf-bd14-9798e8534dc0)
+]
+interface IDXGIAdapter : IDXGIObject
+{
+    HRESULT EnumOutputs(UINT output_idx, IDXGIOutput **output);
+    HRESULT GetDesc(DXGI_ADAPTER_DESC *desc);
+    HRESULT CheckInterfaceSupport(REFGUID guid, void *umd_version);
+}
+
 [
     local,
     object,
diff --git a/tests/d3d12.c b/tests/d3d12.c
index e5a6249afff8..3956fbaa3b56 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -890,18 +890,41 @@ static IUnknown *create_adapter(void)
         return adapter;
     }
 
-    if (use_adapter_idx)
-        hr = IDXGIFactory4_EnumAdapters(factory, use_adapter_idx, (IDXGIAdapter **)&adapter);
+    hr = IDXGIFactory4_EnumAdapters(factory, use_adapter_idx, (IDXGIAdapter **)&adapter);
     IDXGIFactory4_Release(factory);
     if (FAILED(hr))
         trace("Failed to get adapter, hr %#x.\n", hr);
     return adapter;
 }
+
+static void print_adapter_info(void)
+{
+    IDXGIAdapter *dxgi_adapter;
+    DXGI_ADAPTER_DESC desc;
+    IUnknown *adapter;
+    HRESULT hr;
+
+    if (!(adapter = create_adapter()))
+        return;
+
+    hr = IUnknown_QueryInterface(adapter, &IID_IDXGIAdapter, (void **)&dxgi_adapter);
+    ok(hr == S_OK, "Failed to query IDXGIAdapter, hr %#x.\n", hr);
+    IUnknown_Release(adapter);
+
+    hr = IDXGIAdapter_GetDesc(dxgi_adapter, &desc);
+    ok(hr == S_OK, "Failed to get adapter desc, hr %#x.\n", hr);
+
+    trace("Adapter: %04x:%04x.\n", desc.VendorId, desc.DeviceId);
+
+    IDXGIAdapter_Release(dxgi_adapter);
+}
 #else
 static IUnknown *create_adapter(void)
 {
     return NULL;
 }
+
+static void print_adapter_info(void) {}
 #endif
 
 static ID3D12Device *create_device(void)
@@ -21923,6 +21946,8 @@ START_TEST(d3d12)
         ID3D12Debug_Release(debug);
     }
 
+    print_adapter_info();
+
     run_test(test_create_device);
     run_test(test_node_count);
     run_test(test_check_feature_support);
-- 
2.18.1




More information about the wine-devel mailing list