static void test_adapter_desc(IDXGIDevice *device) { DXGI_ADAPTER_DESC1 desc1; IDXGIAdapter1 *adapter1; DXGI_ADAPTER_DESC desc; IDXGIAdapter *adapter; HRESULT hr; hr = IDXGIDevice_GetAdapter(device, &adapter); ok(SUCCEEDED(hr), "GetAdapter failed, hr %#x.\n", hr); hr = IDXGIAdapter_GetDesc(adapter, NULL); ok(hr == E_INVALIDARG, "GetDesc returned %#x, expected %#x.\n", hr, E_INVALIDARG); hr = IDXGIAdapter_GetDesc(adapter, &desc); ok(SUCCEEDED(hr), "GetDesc failed, hr %#x.\n", hr); trace("%s.\n", wine_dbgstr_w(desc.Description)); trace("%04x: %04x:%04x (rev %02x).\n", desc.SubSysId, desc.VendorId, desc.DeviceId, desc.Revision); trace("Dedicated video memory: %lu (%lu MB).\n", desc.DedicatedVideoMemory, desc.DedicatedVideoMemory / (1024 * 1024)); trace("Dedicated system memory: %lu (%lu MB).\n", desc.DedicatedSystemMemory, desc.DedicatedSystemMemory / (1024 * 1024)); trace("Shared system memory: %lu (%lu MB).\n", desc.SharedSystemMemory, desc.SharedSystemMemory / (1024 * 1024)); trace("LUID: %08x:%08x.\n", desc.AdapterLuid.HighPart, desc.AdapterLuid.LowPart); hr = IDXGIAdapter_QueryInterface(adapter, &IID_IDXGIAdapter1, (void **)&adapter1); ok(SUCCEEDED(hr) || broken(hr == E_NOINTERFACE), "Got unexpected hr %#x.\n", hr); if (hr == E_NOINTERFACE) goto done; hr = IDXGIAdapter1_GetDesc1(adapter1, &desc1); ok(SUCCEEDED(hr), "GetDesc1 failed, hr %#x.\n", hr); ok(!lstrcmpW(desc.Description, desc1.Description), "Got unexpected description %s.\n", wine_dbgstr_w(desc1.Description)); ok(desc1.VendorId == desc.VendorId, "Got unexpected vendor ID %04x.\n", desc1.VendorId); ok(desc1.DeviceId == desc.DeviceId, "Got unexpected device ID %04x.\n", desc1.DeviceId); ok(desc1.SubSysId == desc.SubSysId, "Got unexpected sub system ID %04x.\n", desc1.SubSysId); ok(desc1.Revision == desc.Revision, "Got unexpected revision %02x.\n", desc1.Revision); ok(desc1.DedicatedVideoMemory == desc.DedicatedVideoMemory, "Got unexpected dedicated video memory %lu.\n", desc1.DedicatedVideoMemory); ok(desc1.DedicatedSystemMemory == desc.DedicatedSystemMemory, "Got unexpected dedicated system memory %lu.\n", desc1.DedicatedSystemMemory); ok(desc1.SharedSystemMemory == desc.SharedSystemMemory, "Got unexpected shared system memory %lu.\n", desc1.SharedSystemMemory); ok(!memcmp(&desc.AdapterLuid, &desc1.AdapterLuid, sizeof(desc.AdapterLuid)), "Got unexpected adapter LUID %08x:%08x.\n", desc1.AdapterLuid.HighPart, desc1.AdapterLuid.LowPart); trace("Flags: %08x.\n", desc1.Flags); IDXGIAdapter1_Release(adapter1); done: IDXGIAdapter_Release(adapter); }
/** * It describes our Direct3D object */ static char *DxDescribe(directx_sys_t *dx_sys) { static const struct { unsigned id; char name[32]; } vendors [] = { { 0x1002, "ATI" }, { 0x10DE, "NVIDIA" }, { 0x1106, "VIA" }, { 0x8086, "Intel" }, { 0x5333, "S3 Graphics" }, { 0, "" } }; IDXGIDevice *pDXGIDevice = NULL; HRESULT hr = ID3D11Device_QueryInterface( (ID3D11Device*) dx_sys->d3ddev, &IID_IDXGIDevice, (void **)&pDXGIDevice); if (FAILED(hr)) { return NULL; } IDXGIAdapter *p_adapter; hr = IDXGIDevice_GetAdapter(pDXGIDevice, &p_adapter); if (FAILED(hr)) { IDXGIDevice_Release(pDXGIDevice); return NULL; } DXGI_ADAPTER_DESC adapterDesc; if (SUCCEEDED(IDXGIAdapter_GetDesc(p_adapter, &adapterDesc))) { const char *vendor = "Unknown"; for (int i = 0; vendors[i].id != 0; i++) { if (vendors[i].id == adapterDesc.VendorId) { vendor = vendors[i].name; break; } } char *description; if (asprintf(&description, "D3D11VA (%s, vendor %u(%s), device %u, revision %u)", FromWide(adapterDesc.Description), adapterDesc.VendorId, vendor, adapterDesc.DeviceId, adapterDesc.Revision) < 0) return NULL; IDXGIAdapter_Release(p_adapter); IDXGIDevice_Release(pDXGIDevice); return description; } IDXGIAdapter_Release(p_adapter); IDXGIDevice_Release(pDXGIDevice); return NULL; }
bool isNvidiaHardware(ID3D11Device *d3ddev) { IDXGIAdapter *p_adapter = D3D11DeviceAdapter(d3ddev); if (!p_adapter) return NULL; bool result = false; DXGI_ADAPTER_DESC adapterDesc; if (SUCCEEDED(IDXGIAdapter_GetDesc(p_adapter, &adapterDesc))) { result = adapterDesc.VendorId == 0x10DE; } IDXGIAdapter_Release(p_adapter); return result; }
bool isXboxHardware(ID3D11Device *d3ddev) { IDXGIAdapter *p_adapter = D3D11DeviceAdapter(d3ddev); if (!p_adapter) return NULL; bool result = false; DXGI_ADAPTER_DESC adapterDesc; if (SUCCEEDED(IDXGIAdapter_GetDesc(p_adapter, &adapterDesc))) { if (adapterDesc.VendorId == 0 && adapterDesc.DeviceId == 0 && !wcscmp(L"ROOT\\SraKmd\\0000", adapterDesc.Description)) result = true; } IDXGIAdapter_Release(p_adapter); return result; }