MCPcopy Create free account
hub / github.com/Aleksoid1978/VideoRenderer / InitInternal

Method InitInternal

Source/DX9VideoProcessor.cpp:377–618  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

375}
376
377HRESULT 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));

Callers

nothing calls this directly

Calls 13

DLogFunction · 0.85
A2WStrFunction · 0.85
HR2StrFunction · 0.85
GetDataFromResourceFunction · 0.85
HaveSSE41Function · 0.85
InitVideoServiceMethod · 0.80
SetDeviceMethod · 0.80
OnDisplayModeChangeMethod · 0.80
HookFuncFunction · 0.70
GetAdapterFunction · 0.70
InitDeviceObjectsMethod · 0.45
CreateMethod · 0.45

Tested by

no test coverage detected