1
0
mirror of https://github.com/narzoul/DDrawCompat synced 2024-12-30 08:55:36 +01:00

Count non-local vidmem as local up to the 1GB limit

Compensates for DVMT not reporting sufficient local video memory
for surface allocation on integrated Intel GPUs.
This commit is contained in:
narzoul 2021-10-31 00:08:09 +02:00
parent 5eaa79d04c
commit 67f38479b7

View File

@ -162,19 +162,19 @@ namespace
case KMTQAITYPE_GETSEGMENTSIZE:
{
auto info = static_cast<D3DKMT_SEGMENTSIZEINFO*>(pData->pPrivateDriverData);
info->DedicatedVideoMemorySize += info->DedicatedSystemMemorySize;
info->DedicatedSystemMemorySize = 0;
const ULONGLONG maxMem = 0x3FFF0000;
if (info->DedicatedVideoMemorySize > maxMem)
if (info->DedicatedVideoMemorySize < maxMem)
{
info->DedicatedVideoMemorySize = maxMem;
}
if (info->DedicatedVideoMemorySize + info->DedicatedSystemMemorySize > maxMem)
{
info->DedicatedSystemMemorySize = maxMem - info->DedicatedVideoMemorySize;
}
if (info->SharedSystemMemorySize > maxMem)
{
info->SharedSystemMemorySize = maxMem;
auto addedMem = min(maxMem - info->DedicatedVideoMemorySize, info->SharedSystemMemorySize);
info->DedicatedVideoMemorySize += addedMem;
info->SharedSystemMemorySize -= addedMem;
}
info->DedicatedVideoMemorySize = min(info->DedicatedVideoMemorySize, maxMem);
info->SharedSystemMemorySize = min(info->SharedSystemMemorySize, maxMem);
}
break;
}