| 375 | } |
| 376 | |
| 377 | HRESULT CDX9VideoProcessor::InitInternal(bool bFullCreate, bool* pChangeDevice) |
| 378 | { |
| 379 | DLog(L"CDX9VideoProcessor::InitInternal()"); |
| 380 | |
| 381 | CheckPointer(m_pD3DEx, E_FAIL); |
| 382 | |
| 383 | if (!pOrigSystemParametersInfoA) { |
| 384 | pOrigSystemParametersInfoA = SystemParametersInfoA; |
| 385 | auto ret = HookFunc(&pOrigSystemParametersInfoA, pNewSystemParametersInfoA); |
| 386 | DLogIf(!ret, L"CDX9VideoProcessor::InitInternal() : hook for SystemParametersInfoA() fail"); |
| 387 | |
| 388 | pOrigSetWindowLongA = SetWindowLongA; |
| 389 | ret = HookFunc(&pOrigSetWindowLongA, pNewSetWindowLongA); |
| 390 | DLogIf(!ret, L"CDX9VideoProcessor::InitInternal() : hook for SetWindowLongA() fail"); |
| 391 | |
| 392 | pOrigSetWindowPos = SetWindowPos; |
| 393 | ret = HookFunc(&pOrigSetWindowPos, pNewSetWindowPos); |
| 394 | DLogIf(!ret, L"CDX9VideoProcessor::InitInternal() : hook for SetWindowPos() fail"); |
| 395 | |
| 396 | pOrigShowWindow = ShowWindow; |
| 397 | ret = HookFunc(&pOrigShowWindow, pNewShowWindow); |
| 398 | DLogIf(!ret, L"CDX9VideoProcessor::InitInternal() : hook for ShowWindow() fail"); |
| 399 | |
| 400 | MH_EnableHook(MH_ALL_HOOKS); |
| 401 | } |
| 402 | |
| 403 | g_bInitVP = true; |
| 404 | |
| 405 | const UINT currentAdapter = GetAdapter(m_hWnd, m_pD3DEx); |
| 406 | bool bTryToReset = !bFullCreate && (currentAdapter == m_nCurrentAdapter) && m_pD3DDevEx; |
| 407 | if (!bTryToReset) { |
| 408 | ReleaseDevice(); |
| 409 | m_nCurrentAdapter = currentAdapter; |
| 410 | } |
| 411 | |
| 412 | D3DADAPTER_IDENTIFIER9 AdapID9 = {}; |
| 413 | if (S_OK == m_pD3DEx->GetAdapterIdentifier(m_nCurrentAdapter, 0, &AdapID9)) { |
| 414 | m_VendorId = AdapID9.VendorId; |
| 415 | m_strAdapterDescription = std::format(L"{} ({:04X}:{:04X})", A2WStr(AdapID9.Description), AdapID9.VendorId, AdapID9.DeviceId); |
| 416 | DLog(L"Graphics D3D9 adapter: {}", m_strAdapterDescription); |
| 417 | } |
| 418 | |
| 419 | #ifdef _DEBUG |
| 420 | D3DCAPS9 DevCaps = {}; |
| 421 | if (S_OK == m_pD3DEx->GetDeviceCaps(m_nCurrentAdapter, D3DDEVTYPE_HAL, &DevCaps)) { |
| 422 | std::wstring dbgstr = L"DeviceCaps:"; |
| 423 | dbgstr += std::format(L"\n MaxTextureWidth : {}", DevCaps.MaxTextureWidth); |
| 424 | dbgstr += std::format(L"\n MaxTextureHeight : {}", DevCaps.MaxTextureHeight); |
| 425 | dbgstr += std::format(L"\n PresentationInterval IMMEDIATE : {}", (DevCaps.PresentationIntervals & D3DPRESENT_INTERVAL_IMMEDIATE) ? L"supported" : L"NOT supported"); |
| 426 | dbgstr += std::format(L"\n PresentationInterval ONE : {}", (DevCaps.PresentationIntervals & D3DPRESENT_INTERVAL_ONE) ? L"supported" : L"NOT supported"); |
| 427 | dbgstr += std::format(L"\n Caps READ_SCANLINE : {}", (DevCaps.Caps & D3DCAPS_READ_SCANLINE) ? L"supported" : L"NOT supported"); |
| 428 | dbgstr += std::format(L"\n PixelShaderVersion : {}.{}", D3DSHADER_VERSION_MAJOR(DevCaps.PixelShaderVersion), D3DSHADER_VERSION_MINOR(DevCaps.PixelShaderVersion)); |
| 429 | dbgstr += std::format(L"\n MaxPixelShader30InstructionSlots: {}", DevCaps.MaxPixelShader30InstructionSlots); |
| 430 | DLog(dbgstr); |
| 431 | } |
| 432 | #endif |
| 433 | |
| 434 | ZeroMemory(&m_DisplayMode, sizeof(D3DDISPLAYMODEEX)); |
nothing calls this directly
no test coverage detected