diff --git a/DDrawCompat/D3dDdi/KernelModeThunks.cpp b/DDrawCompat/D3dDdi/KernelModeThunks.cpp index 2721442..1838225 100644 --- a/DDrawCompat/D3dDdi/KernelModeThunks.cpp +++ b/DDrawCompat/D3dDdi/KernelModeThunks.cpp @@ -162,19 +162,19 @@ namespace case KMTQAITYPE_GETSEGMENTSIZE: { auto info = static_cast(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; }