D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 结构 (d3dkmthk.h)
D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 与 D3DKMTOpenSyncObjectFromNtHandle2 一起使用,以打开受监视的围栏对象。
语法
typedef struct _D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 {
[in] HANDLE hNtHandle;
[in] D3DKMT_HANDLE hDevice;
[in] D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
[out] D3DKMT_HANDLE hSyncObject;
union {
struct {
VOID *FenceValueCPUVirtualAddress;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
UINT EngineAffinity;
} MonitoredFence;
D3DKMT_ALIGN64 UINT64 Reserved[8];
};
} D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2;
成员
[in] hNtHandle
要打开的同步对象的 NT 句柄。
[in] hDevice
使用此同步对象的设备句柄。
[in] Flags
指定此设备的所需同步对象行为,例如等待和信号语义以及 TDR 处理。
[out] hSyncObject
可在此过程中使用的同步对象的句柄。
MonitoredFence
包含可在此过程中使用的同步对象虚拟地址。
[out] MonitoredFence.FenceValueCPUVirtualAddress
CPU 围栏值的只读映射。 这是一个用户模式地址,可从创建受监视围栏对象的进程读取。 对于通过 等 InterlockedCompareExchange64(pointer,0,0)
方法支持 64 位原子读取的 32 位平台,映射将进行读写而不是只读,以避免在互锁操作期间发生访问冲突。 根据 No64BitAtomics cap 的值,此地址指向 32 位或 64 位基础值。
[out] MonitoredFence.FenceValueGPUVirtualAddress
GPU 围栏值的读写映射。 驱动程序可以通过将此地址的 GPU 写入命令插入命令缓冲区来发出新的围栏值信号,DirectX 图形内核将取消阻止此围栏对象值的等待者。 此 GPU 虚拟地址是异步映射的,在访问此 GPU 虚拟地址之前,驱动程序应等待打开或创建了受监视围栏同步对象的设备到达其分页围栏对象上的 PagingFenceValue 。 根据 No64BitAtomics cap 的值,此地址指向 32 位或 64 位基础值。
[in] MonitoredFence.EngineAffinity
位字段,其中每个位位置 (从零开始) 定义将提交 GPU 虚拟地址的链接显示适配器链接中的物理适配器索引。 零表示 GPU 虚拟地址将提交到所有物理适配器。
Reserved[8]
MonitoredFence 结构的合并值。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
最低受支持的服务器 | Windows Server 2016 |
标头 | d3dkmthk.h (包括 D3dkmthk.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈