mirror of
https://github.com/optiscaler/OptiScaler.git
synced 2026-08-25 23:56:48 +00:00
Remove the custom D3DKMTEnumAdapters2 on Linux
Newer Wine already supports it so no need for it
This commit is contained in:
@@ -52,65 +52,6 @@ static NTSTATUS hkD3DKMTQueryAdapterInfo(const D3DKMT_QUERYADAPTERINFO* data)
|
||||
return result;
|
||||
}
|
||||
|
||||
// Only for Linux, Wine doesn't have this function
|
||||
VALIDATE_HOOK(customD3DKMTEnumAdapters2, PFN_D3DKMTEnumAdapters2)
|
||||
static NTSTATUS customD3DKMTEnumAdapters2(const D3DKMT_ENUMADAPTERS2* data)
|
||||
{
|
||||
LOG_FUNC();
|
||||
|
||||
// Try to detect streamline
|
||||
if (data->pAdapters != nullptr && data->NumAdapters == 8)
|
||||
{
|
||||
LOG_INFO("Streamline detected");
|
||||
|
||||
static D3DKMT_ADAPTERINFO* adapters = []() -> D3DKMT_ADAPTERINFO*
|
||||
{
|
||||
static D3DKMT_ADAPTERINFO pAdapters[8] {};
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
IDXGIFactory* pFactory = nullptr;
|
||||
hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**) &pFactory);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
LOG_DEBUG("Couldn't create a dxgi factory");
|
||||
return pAdapters;
|
||||
}
|
||||
|
||||
IDXGIAdapter* pAdapter = nullptr;
|
||||
for (UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i)
|
||||
{
|
||||
DXGI_ADAPTER_DESC desc;
|
||||
pAdapter->GetDesc(&desc);
|
||||
|
||||
pAdapters[i].AdapterLuid.HighPart = desc.AdapterLuid.HighPart;
|
||||
pAdapters[i].AdapterLuid.LowPart = desc.AdapterLuid.LowPart;
|
||||
|
||||
pAdapter->Release();
|
||||
}
|
||||
|
||||
pFactory->Release();
|
||||
|
||||
return pAdapters;
|
||||
}();
|
||||
|
||||
// Something's not quite right in here
|
||||
// Can't just send all LUIDs from DXGI as streamline isn't happy
|
||||
// Can't send a true number of adapters as streamline isn't happy
|
||||
// 8th adapter sometimes has junk data so sending only 6 to be safe
|
||||
|
||||
for (uint32_t i = 0; i < 6; i++)
|
||||
{
|
||||
data->pAdapters[i].AdapterLuid.HighPart = adapters[0].AdapterLuid.HighPart;
|
||||
data->pAdapters[i].AdapterLuid.LowPart = adapters[0].AdapterLuid.LowPart;
|
||||
LOG_DEBUG("sent {}.{}", data->pAdapters[i].AdapterLuid.HighPart, data->pAdapters[i].AdapterLuid.LowPart);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
// for spoofing HAGS, call early
|
||||
static void hookGdi32()
|
||||
{
|
||||
|
||||
@@ -113,13 +113,6 @@ FARPROC WINAPI KernelHooks::hk_K32_GetProcAddress(HMODULE hModule, LPCSTR lpProc
|
||||
return (FARPROC) &hkAmdExtD3DCreateInterface;
|
||||
}
|
||||
|
||||
if (State::Instance().isRunningOnLinux && lpProcName != nullptr &&
|
||||
hModule == KernelBaseProxy::GetModuleHandleW_()(L"gdi32.dll") &&
|
||||
lstrcmpA(lpProcName, "D3DKMTEnumAdapters2") == 0)
|
||||
{
|
||||
return (FARPROC) &customD3DKMTEnumAdapters2;
|
||||
}
|
||||
|
||||
return o_K32_GetProcAddress(hModule, lpProcName);
|
||||
}
|
||||
|
||||
@@ -189,11 +182,6 @@ FARPROC WINAPI KernelHooks::hk_KB_GetProcAddress(HMODULE hModule, LPCSTR lpProcN
|
||||
// Util::WhoIsTheCaller(_ReturnAddress()));
|
||||
// }
|
||||
|
||||
if (State::Instance().isRunningOnLinux && lpProcName != nullptr &&
|
||||
hModule == KernelBaseProxy::GetModuleHandleW_()(L"gdi32.dll") &&
|
||||
lstrcmpA(lpProcName, "D3DKMTEnumAdapters2") == 0)
|
||||
return (FARPROC) &customD3DKMTEnumAdapters2;
|
||||
|
||||
return o_KB_GetProcAddress(hModule, lpProcName);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user