以下是 Vulkan Capability 查看器在我的计算机上显示的内容:
MEMORY HEAP 0
DEVICE SIZE 8321499136
FLAGS
DEVICE_LOCAL_BIT
MULTI_INSTANCE_BIT
MEMORY TYPE 0
DEVICE_LOCAL_BIT
MEMORY TYPE 1
DEVICE_LOCAL_BIT
MEMORY HEAP 1
DEVICE SIZE 16760438784
FLAGS
NONE
MEMORY TYPE 0
HOST_VISIBLE_BIT
HOST_COHERENT_BIT
MEMORY TYPE 0
HOST_VISIBLE_BIT
HOST_COHERENT_BIT
堆 0 是我的 GPU 设备,有 8GB 内存。堆 1 应该是我的 CPU 内存。我的 CPU 内存是 32GB,在 Windows 的任务管理器中也显示为 32GB,但在 Vulkan 的内存堆描述中,只有一半(16GB)显示。我查找了原因,并在 Microsoft 页面上的“计算图形内存”页面中找到了:
在 VidMm 向客户端报告准确的数据之前,它必须首先计算显存的总量。VidMm 使用以下内存类型和公式来计算显存数量:
系统总内存
This value is the total amount of system memory accessible to the operating system. Memory that the BIOS allocates doesn't appear in this number. For example, a computer with a 1 GB DIMM (1,024 MB) that has a BIOS that reserves 1 MB of memory appears to have 1,023 MB of system memory.
可供图形使用的总系统内存
This value is the total amount of system memory that is dedicated or shared to the GPU. This number is calculated as follows: C++
图形可用系统内存总量 = MAX((系统内存总量 / 2), 64MB)
链接在这里。
我在想这是为什么。你的内存只有一半可以同时使用 Vulkan 和 DirectX,或者图形 API?这显然是 VidMm 报告的。我不知道 VidMm 是什么,但 DirectX 或 Vulkan 都会参考这个来查看有多少可用内存,结果它总是报告只有一半的内存?
就我而言,我有一个 8GB 的独立显卡,报告显示内存正确,但系统内存显示只有实际内存的一半,也就是 32GB 除以 2。如果是核显会怎么样?设备只能使用系统内存的一半?也就是说只能使用一半的设备内存?这种情况只在 Windows 上出现,现在也出现在其他操作系统上了?