 
            From: Rémi Bernon rbernon@codeweavers.com
This should be the case but some 32bit driver implementations are bogus when more than 4G of memory is available. --- dlls/win32u/d3dkmt.c | 2 +- dlls/win32u/tests/d3dkmt.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/dlls/win32u/d3dkmt.c b/dlls/win32u/d3dkmt.c index 3afdcabfcf8..558a90d1028 100644 --- a/dlls/win32u/d3dkmt.c +++ b/dlls/win32u/d3dkmt.c @@ -679,7 +679,7 @@ NTSTATUS WINAPI NtGdiDdDDIQueryVideoMemoryInfo( D3DKMT_QUERYVIDEOMEMORYINFO *des !(properties2.memoryProperties.memoryHeaps[i].flags & VK_MEMORY_HEAP_DEVICE_LOCAL_BIT))) { desc->Budget += budget.heapBudget[i]; - desc->CurrentUsage += budget.heapUsage[i]; + desc->CurrentUsage += min( budget.heapBudget[i], budget.heapUsage[i] ); } } desc->AvailableForReservation = desc->Budget / 2; diff --git a/dlls/win32u/tests/d3dkmt.c b/dlls/win32u/tests/d3dkmt.c index a65ca1a4c02..3f71b73a5e4 100644 --- a/dlls/win32u/tests/d3dkmt.c +++ b/dlls/win32u/tests/d3dkmt.c @@ -1423,7 +1423,6 @@ static void test_D3DKMTQueryVideoMemoryInfo(void) query_memory_info.PhysicalAdapterIndex = 0; query_memory_info.MemorySegmentGroup = groups[i]; status = D3DKMTQueryVideoMemoryInfo( &query_memory_info ); - todo_wine_if( status == STATUS_INVALID_PARAMETER ) /* fails on Wine without a Vulkan adapter */ ok( status == STATUS_SUCCESS, "Got unexpected return code %#lx.\n", status ); ok( query_memory_info.Budget >= query_memory_info.AvailableForReservation, "Unexpected budget %I64u and reservation %I64u.\n", query_memory_info.Budget,