计算图形内存
在 VidMm 能够向客户端报告准确的帐户之前,它必须首先计算图形内存的总量。 VidMm 使用以下内存类型和公式来计算图形内存:
系统总内存
此值是操作系统可访问的系统内存总量。 BIOS 分配的内存不会出现在此数字中。 例如,一台具有 1 GB DIMM (1,024 MB) 的计算机,其 BIOS 保留了 1 MB 的内存,似乎有 1,023 MB 的系统内存。
可用于图形用途的系统内存总量
此值是专用于或共享到 GPU 的系统内存总量。 此数字的计算方式如下:
TotalSystemMemoryAvailableForGraphics = MAX((TotalSystemMemory / 2), 64MB)
对光圈段提交限制
此值是 VidMm 允许内核模式显示微型端口驱动程序 (KMD) 在任何给定时刻锁定 GPU 使用的系统内存量。 也就是说,它是 KMD 可以通过光圈段映射的系统内存量。 为 GPU 分配的系统内存总量可能会大大超过提交限制;然而,VidMm 确保在任何时候只有一个提交限制数量实际上驻留在一个光圈段中。
默认情况下,特定光圈段的提交限制是该段的大小。 当驱动程序描述段时,KMD 可以在 DXGK_SEGMENTDESCRIPTOR 结构的 CommitLimit 成员中指定不同的提交限制。 以这种方式指定的提交限制仅适用于驱动程序描述的特定段。
除了每段提交限制外,所有光圈段都有全局提交限制。 此全局提交限制也称为共享系统内存。 VidMm 计算此值。 KMD 可以在 DXGK_DRIVERCAPS 结构的 ApertureSegmentCommitLimit 成员中将此值减小到较低的值;然而,我们不推荐这种做法。
VidMm 不允许 KMD 违反每段提交限制和全局提交限制。 如果特定段的提交限制为 1 GB,但全局提交限制为 256 MB,则 VidMm 不允许 KMD 将超过 256 MB 的系统内存映射到该段。
专用视频内存
此值是 KMD 在 DXGK_SEGMENTFLAGS 结构中未指定 PopulatedFromSystemMemory 成员的所有内存段的大小之和。
专用系统内存
此值是 KMD 在 DXGK_SEGMENTFLAGS 结构中指定 PopulatedFromSystemMemory 成员的所有内存段的大小之和。 此数字不能大于图形可用的总系统内存 (TotalSystemMemoryAvailableForGraphics)。
最大共享系统内存
此值是共享给 GPU 的最大系统内存量。 VidMm 使用以下公式计算它:
MaxSharedSystemMemory = TotalSystemMemoryAvailableForGraphics - DedicatedSystemMemory
共享系统内存
此值是共享给 GPU 的系统内存量。 VidMm 使用以下公式计算它:
SharedSystemMemory = MIN(MIN(SumOfCommitLimitOnAllApertureSegment, DXGK_DRIVERCAPS.ApertureSegmentCommitLimit), MaxSharedSystemMemory)
总视频内存
此值是视频内存总量。 VidMm 使用以下公式计算它:
TotalVideoMemory = DedicatedVideoMemory + DedicatedSystemMemory + SharedSystemMemory
相关文章包括: