计算图形内存

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
    

相关文章包括: