DXGK_SEGMENTFLAGS 结构 (d3dkmddi.h)

DXGK_SEGMENTFLAGS 结构标识驱动程序通过其 DxgkDdiQueryAdapterInfo 函数提供的段的属性。

语法

typedef struct _DXGK_SEGMENTFLAGS {
  union {
    struct {
      UINT Aperture : 1;
      UINT Agp : 1;
      UINT CpuVisible : 1;
      UINT UseBanking : 1;
      UINT CacheCoherent : 1;
      UINT PitchAlignment : 1;
      UINT PopulatedFromSystemMemory : 1;
      UINT PreservedDuringStandby : 1;
      UINT PreservedDuringHibernate : 1;
      UINT PartiallyPreservedDuringHibernate : 1;
      UINT DirectFlip : 1;
      UINT Use64KBPages : 1;
      UINT ReservedSysMem : 1;
      UINT SupportsCpuHostAperture : 1;
      UINT SupportsCachedCpuHostAperture : 1;
      UINT ApplicationTarget : 1;
      UINT VprSupported : 1;
      UINT VprPreservedDuringStandby : 1;
      UINT EncryptedPagingSupported : 1;
      UINT LocalBudgetGroup : 1;
      UINT NonLocalBudgetGroup : 1;
      UINT PopulatedByReservedDDRByFirmware : 1;
#if ...
      UINT Reserved : 10;
#elif
      UINT Reserved : 11;
#elif
      UINT Reserved : 21;
#else
      UINT Reserved : 22;
#endif
    };
    UINT Value;
  };
} DXGK_SEGMENTFLAGS;

成员

Aperture

[out]一个 UINT 值,该值指定段是光圈段而不是内存段。 光圈段没有可以容纳分配内容的物理页面。 当视频内存管理器将分配分页到内存段时,内存管理器会将分配的内容从系统内存后备存储传输到段位置。 当视频内存管理器将分配分页到光圈段时,内存管理器会将分配后备存储的物理页映射到该段。

如果驱动程序指定此成员,则它还必须为其 DxgkDdiBuildPagingBuffer 函数实现 map-aperture-segment 和 unmap-aperture-segment 操作类型。

设置此成员等效于设置 32 位 Value 成员 (0x00000001) 的第一位。

Agp

[out]一个 UINT 值,该值指定段是否为 AGP 类型光圈段,它使用芯片集公开的 AGP 光圈的一部分。 视频内存管理器为基础光圈分配页面,并与图形地址重新映射表通信, (GART) 驱动程序来映射和取消映射光圈的内存。 由于只能存在一个 AGP 段,因此驱动程序不应使用任何其他DXGK_SEGMENTFLAGS位字段标志指定 Agp 位字段标志。

设置此成员等效于设置 32 位 Value 成员 (0x00000002) 的第二位。

CpuVisible

[out]一个 UINT 值,该值指定 CPU 是否可以在描述内存段的 DXGK_SEGMENTDESCRIPTOR 结构的 CpuTranslatedAddress 成员指定的地址处访问内存段。

此成员对光圈段没有意义,包括 AGP 类型的光圈段。 当用户模式显示驱动程序未为主分配设置备用虚拟地址 (即驱动程序在调用 pfnLockCb 函数期间未在D3DDDICB_LOCKFLAGS结构的 Flags 成员中设置 UseAlternateVA 时,会发生唯一的异常) 。

有关详细信息,请参阅备注。

设置此成员等效于设置 32 位 Value 成员 (0x00000004) 的第三位。

UseBanking

[out]一个 UINT 值,该值指定是否将段划分为多个组,驱动程序使用该库向视频内存管理器提供有关段内分配位置的提示。 驱动程序还应在描述段的DXGK_SEGMENTDESCRIPTOR结构的 NbOfBankspBankRangeTable 成员中指定有效的银行信息。

设置此成员等效于设置 32 位 Value 成员 (0x00000008) 的第四位。

CacheCoherent

[out]一个 UINT 值,该值指定光圈段是否可以与映射到光圈的可缓存页面保持缓存一致性。 只能通过设置 Aperture 成员 (设置此成员,即 CacheCoherent 对内存段) 没有意义。

设置此成员等效于设置 32 位 Value 成员 (0x00000010) 的第五位。

PitchAlignment

[out]一个 UINT 值,该值指定是否必须对齐映射到段的分配。 对于这种类型的段,视频内存管理器使用DXGK_ALLOCATIONINFO结构的 Size 成员进行分配,以便为分配分配分配分配后备存储。 但是,视频内存管理器使用 DXGK_ALLOCATIONINFO 的 PitchAlignedSize 成员为段分配资源。 针对此类段的分配通常具有不同的后备存储和段的大小。 当后备存储大小与段大小不匹配时,驱动程序必须确定如何正确移动分配中的数据。 此类型的段不能用于逐出。

设置此成员等效于设置 32 位 Value 成员 (0x00000020) 的第六位。

PopulatedFromSystemMemory

[out]一个 UINT 值,该值指定是否实际从驱动程序在初始化期间分配的系统内存填充内存段。 如果内存段是从 BIOS 保留的系统内存填充的,并且操作系统 (无法访问,则当操作系统报告) 系统内存总量时,操作系统不计算此系统内存,驱动程序不应设置此标志。 此标志无效,在光圈段上被忽略。

设置此成员等效于设置 32 位 Value 成员 (0x00000040) 的第七位。

PreservedDuringStandby

[out]一个 UINT 值,该值指定是否在过渡到备用系统电源状态时保留段。

有关电源转换选项的详细信息,请参阅备注。

设置此成员等效于设置 32 位 Value 成员 (0x00000080) 的第 8 位。

支持从Windows 8开始。

PreservedDuringHibernate

[out]一个 UINT 值,该值指定是否在过渡到休眠系统电源状态时保留段。 除非还设置了 PreservedDuringStandby 成员,否则不要设置此标志。 有关电源转换选项的详细信息,请参阅备注。

设置此成员等效于设置 32 位 Value 成员 (0x00000100) 的第 9 位。

支持从Windows 8开始。

PartiallyPreservedDuringHibernate

[out]一个 UINT 值,该值指定段是否在过渡到休眠系统电源状态时部分保留。 除非还设置了 PreservedDuringStandby 成员,否则不要设置此标志。 有关电源转换选项的详细信息,请参阅备注。

设置此成员等效于设置 32 位 Value 成员 (0x00000200) 的第 10 位。

支持从Windows 8开始。

DirectFlip

[out]一个 UINT 值,该值指定段是否支持直接翻转分配。 在这种情况下,驱动程序必须确保可从此段固定和扫描直接翻转分配。

设置此成员等效于设置 32 位 Value 成员 (0x00000400) 的第 11 位。

支持从Windows 8开始。

Use64KBPages

[out]设置后,GPU 内存段支持 64 KB 页。 否则,支持 4 KB 页。 当驱动程序设置上限并且分配可以分页到段时,内核模式驱动程序从 DXGK_ALLOCATIONINFO 返回的分配对齐方式必须是 64 KB 的倍 a。

从 Windows 10 开始支持。

ReservedSysMem

[out]保留供系统使用,不应由内核模式驱动程序设置。

从 Windows 10 开始支持。

SupportsCpuHostAperture

[out]设置后,可以通过 CPU 主机光圈映射段。 此标志不能与 CpuVisible 标志结合使用。

从 Windows 10 开始支持。

SupportsCachedCpuHostAperture

[out]如果设置,则表示硬件支持 CPU 缓存一致的 CPU 主机光圈。 此外,必须设置 SupportsCpuHostAperture 标志。 标志通常由软件 GPU 仿真驱动程序设置。

从 Windows 10 开始支持。

ApplicationTarget

[out]设置后,它指示此细分应是应用程序预算的目标。

从 Windows 10 开始支持。

VprSupported

[out]设置后,指示视频保护区域 (VPR) 受支持。

VprPreservedDuringStandby

[out]设置后,指示在待机期间保留 VPR 的内容。

EncryptedPagingSupported

[out]设置后,指示在分页期间加密受硬件保护的分配。

LocalBudgetGroup

[out]设置后,指示此段计入本地内存段预算组。

NonLocalBudgetGroup

[out]设置后,指示此段计入非本地内存段预算组。

PopulatedByReservedDDRByFirmware

[out]设置后,指示此段是通过固件从保留的系统 DDR 内存填充的。 从 Windows Server 2022 (WDDM 2.9) 开始可用。

Reserved

[out]此成员为保留成员,应设置为零。

Value

[out]DXGK_SEGMENTFLAGS包含的联合中的成员可以保存标识段属性的 32 位值。

注解

驱动程序可以通过在 32 位 Value 成员中设置位或DXGK_SEGMENTFLAGS包含的联合中设置结构的单个成员来指定段的属性。

请注意,对于 AGP 类型的光圈段,驱动程序必须在DXGK_SEGMENTFLAGS包含的联合中专门设置结构的 Agp 成员。 尽管 AGP 类型的光圈段是一个光圈,并且对 CPU 可见,但如果设置了任何其他成员,适配器将无法初始化。

在共享主分配上使用光圈段的特殊情况下, (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATAStandardAllocationType是D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) ,DXGK_ALLOCATIONINFOFLAGS。未设置 UseAlternateVA,驱动程序应使用分区支持的主分配 (DXGK_VIDMMCAPS。当调用驱动程序的 DxgkDdiQueryAdapterInfo 函数时,将 sectionBackedPrimary 设置为) 。 通过使用部分支持的主节点,可以避免光圈段的 CpuVisible 限制。

通过使用共享的分区支持的主分配,可以避免光圈段的 CpuVisible 限制。 在这种情况下,请在共享的主分配 (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA上使用光圈段。StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) ,请勿设置DXGK_ALLOCATIONINFOFLAGSUseAlternateVA,并使用分区支持的主分配 (设置DXGK_VIDMMCAPS。当调用驱动程序的 DxgkDdiQueryAdapterInfo 函数时,SectionBackedPrimary) 。

优化的待机设置

PreservedDuringStandbyPreservedDuringHibernatePartiallyPreservedDuringHibernate 成员的值组合确定当系统进入低功耗 (待机) 系统状态时,是否清除段的内容,如下所示。

在待机期间保留 在休眠期间保留 休眠期间部分保留 待机状态 休眠状态
1 1 1 无效 无效
1 1 0 未清除 未清除
1 0 1 未清除 部分清除
1 0 0 未清除 清除
0 1 1 无效 无效
0 1 0 无效 无效
0 0 1 无效 无效
0 0 0 清除 清除

操作系统无法识别此表中标记为“无效”的组合。

如果启用了 混合睡眠 模式,则系统就像处于休眠状态一样:它会清除在休眠期间未保留的段,即使进入低功耗状态也是如此。

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
标头 d3dkmddi.h (包括 D3dkmddi.h)

另请参阅

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTDESCRIPTOR3

DxgkDdiBuildPagingBuffer

DxgkDdiQueryAdapterInfo