D3DKMT_RENDER结构 (d3dkmthk.h)
D3DKMT_RENDER 结构描述要呈现的当前命令缓冲区。
语法
typedef struct _D3DKMT_RENDER {
union {
[in] D3DKMT_HANDLE hDevice;
[in] D3DKMT_HANDLE hContext;
};
[in] UINT CommandOffset;
[in] UINT CommandLength;
[in] UINT AllocationCount;
[in] UINT PatchLocationCount;
[out] VOID *pNewCommandBuffer;
[in/out] UINT NewCommandBufferSize;
[out] D3DDDI_ALLOCATIONLIST *pNewAllocationList;
[in/out] UINT NewAllocationListSize;
[out] D3DDDI_PATCHLOCATIONLIST *pNewPatchLocationList;
[in/out] UINT NewPatchLocationListSize;
[in] D3DKMT_RENDERFLAGS Flags;
[in] D3DKMT_ALIGN64 ULONGLONG PresentHistoryToken;
[in] ULONG BroadcastContextCount;
D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
[out] ULONG QueuedBufferCount;
[out] D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS NewCommandBuffer;
VOID *pPrivateDriverData;
UINT PrivateDriverDataSize;
} D3DKMT_RENDER;
成员
[in] hDevice
D3DKMT_HANDLE数据类型,表示将命令缓冲区呈现到设备的内核模式句柄。 为了与 Microsoft Direct3D 版本 10 兼容,D3DKMT_RENDER包含的联合中向 D3DKMTRender 函数提供设备句柄。
[in] hContext
D3DKMT_HANDLE数据类型,表示命令缓冲区呈现到的设备上下文的内核模式句柄。
[in] CommandOffset
命令缓冲区中第一个命令的偏移量(以字节为单位)。
[in] CommandLength
命令缓冲区的大小(以字节为单位),从偏移量零开始。
[in] AllocationCount
提交的分配列表中的元素数。
[in] PatchLocationCount
提交的修补程序位置列表中的元素数。
[out] pNewCommandBuffer
指向 OpenGL ICD 接收的命令缓冲区的指针,用于下一次调用 D3DKMTRender 函数。 驱动程序必须始终在调用 D3DKMTRender 后更新其指向命令缓冲区的指针,无论调用是否成功。
在 Windows 7 及更高版本中受支持:
[in]指向在 Flags 成员中设置了 RenderKm 标志时要呈现的命令缓冲区的指针。
[in/out] NewCommandBufferSize
如果在 Flags 成员中指定 ResizeCommandBuffer 位字段标志,则 OpenGL ICD 请求下一个命令缓冲区的大小(以字节为单位)。 如果未指定 ResizeCommandBuffer ,则 忽略 NewCommandBufferSize 中的值。 在输出时,驱动程序接收要使用的下一个命令缓冲区的大小(以字节为单位)。
根据当前内存条件,输出大小可能与输入大小不匹配。
[out] pNewAllocationList
OpenGL ICD 接收的 D3DDDI_ALLOCATIONLIST 结构数组,在下次调用 D3DKMTRender 函数时用作分配列表。 驱动程序必须始终在调用 D3DKMTRender 后更新其指向分配列表的指针,无论调用是否成功。
在 Windows 7 及更高版本中受支持:
[in]如果 Flags 成员中设置了 RenderKm 标志,则指向要呈现的分配列表的指针。
[in/out] NewAllocationListSize
如果在 Flags 成员中指定 ResizeAllocationList 位字段标志,则 OpenGL ICD 为下一个分配列表请求的元素数。 如果未指定 ResizeAllocationList ,则 忽略 NewAllocationListSize 中的值。 在输出时,驱动程序接收在提交下一个命令缓冲区时将在分配数组中可用的元素数。
根据当前内存条件,输出大小可能与输入大小不匹配。
[out] pNewPatchLocationList
OpenGL ICD 接收的 D3DDDI_PATCHLOCATIONLIST 结构数组,在下次调用 D3DKMTRender 函数时用作修补程序位置列表。 无论调用是否成功,驱动程序都必须在调用 D3DKMTRender 后始终更新其指向修补程序位置列表的指针。
[in/out] NewPatchLocationListSize
如果在 Flags 成员中指定 ResizePatchLocationList 位字段标志,OpenGL ICD 为下一个修补程序位置列表请求的元素数。 如果未指定 ResizePatchLocationList ,则会忽略 NewPatchLocationListSize 中的值。 在输出时,驱动程序接收在提交下一个命令缓冲区时将在修补程序位置数组中可用的元素数。
根据当前内存条件,输出大小可能与输入大小不匹配。
[in] Flags
一个D3DKMT_RENDERFLAGS结构,指示要呈现的命令缓冲区的类型(以位字段标志表示)。
[in] PresentHistoryToken
对显示微型端口驱动程序的 DxgkDdiPresent 函数的重定向调用的当前历史记录标记。
当前历史记录令牌是呈现应用提交的数据包,以通知桌面窗口管理器 (DWM) 呈现已完成并且交换链回缓冲区已准备好显示。
[in] BroadcastContextCount
BroadcastContext 指定的数组中其他上下文的数目。
[in] BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]
一个D3DKMT_HANDLE数据类型的数组,这些数据类型表示将当前命令缓冲区广播到的其他上下文的内核模式句柄。 D3DDDI_MAX_BROADCAST_CONTEXT常量(定义为 64)定义 OpenGL ICD 可以将当前命令缓冲区广播到的最大上下文数。
hContext 成员指定并拥有命令缓冲区的原始上下文不是 BroadcastContext 数组中的元素。 例如,如果 BroadcastContext 数组包含一个元素,则 OpenGL ICD 会将命令缓冲区发送到拥有的上下文 (hContext) 并广播到该附加上下文。
[out] QueuedBufferCount
排队到 hContext 成员在提交后指定的上下文的 DMA 缓冲区数。
[out] NewCommandBuffer
指向 OpenGL ICD 接收的命令缓冲区的指针,用于下一次调用 D3DKMTRender 函数。 驱动程序必须始终在调用 D3DKMTRender 后更新其指向命令缓冲区的指针,无论调用是否成功。
在 Windows 7 及更高版本中受支持:
[in]指向在 Flags 成员中设置了 RenderKm 标志时要呈现的命令缓冲区的指针。
pPrivateDriverData
此成员为保留成员,应设置为零。
此成员从 Windows 7 开始可用。
PrivateDriverDataSize
此成员为保留成员,应设置为零。
此成员从 Windows 7 开始可用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
标头 | d3dkmthk.h (包括 D3dkmthk.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈