DXGKARG_PRESENT结构(d3dkmddi.h)
DXGKARG_PRESENT 结构描述源到主复制作。
语法
typedef struct _DXGKARG_PRESENT {
[out] VOID *pDmaBuffer;
[in] UINT DmaSize;
[in] VOID *pDmaBufferPrivateData;
[in] UINT DmaBufferPrivateDataSize;
union {
[in] DXGK_ALLOCATIONLIST *pAllocationList;
[in] DXGK_PRESENTALLOCATIONINFO *pAllocationInfo;
[in] DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
};
#if ...
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
[in] UINT PatchLocationListOutSize;
[in] DXGK_ALLOCATIONLIST *pAllocationList;
#else
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
[in] UINT PatchLocationListOutSize;
#endif
[in/out] UINT MultipassOffset;
[in] UINT Color;
[in] RECT DstRect;
[in] RECT SrcRect;
[in] UINT SubRectCnt;
[in] const RECT *pDstSubRects;
[in] D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
[in] DXGK_PRESENTFLAGS Flags;
[in] UINT DmaBufferSegmentId;
[in] PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
[in] UINT Reserved;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT NumSrcAllocations;
UINT NumDstAllocations;
UINT PrivateDriverDataSize;
PVOID pPrivateDriverData;
} DXGKARG_PRESENT;
成员
[out] pDmaBuffer
指向 DMA 缓冲区开头的指针,该缓冲区在 4 KB 上对齐。 可以通过 DMA 将此缓冲区发送到图形硬件。 在显示微型端口驱动程序从 DxgkDdiPresent 函数返回之前,驱动程序应将 pDmaBuffer 到驱动程序写入的最后一个字节之后的下一个空字节,或者驱动程序应指向位置(缓冲区空间之外的一个字节),前提是没有更多空间可用。 如果缓冲区足够大,则此位置是正确的。
[in] DmaSize
pDmaBuffer 指向的 DMA 缓冲区的大小(以字节为单位)。
[in] pDmaBufferPrivateData
指向驱动程序驻留的专用数据结构的指针,该结构与 pDmaBuffer 指向的 DMA 缓冲区相关联。
[in] DmaBufferPrivateDataSize
pDmaBufferPrivateData 指向当前作的专用数据结构中保留的字节数。
[in] pAllocationList
描述复制作的源、目标或两者的 DXGK_ALLOCATIONLIST 结构的数组。 驱动程序通过 hDeviceSpecificAllocationpAllocationList[DXGK_PRESENT_SOURCE_INDEX] 元素(即元素 1)的成员访问源分配句柄。 驱动程序通过 hDeviceSpecificAllocationpAllocationList[DXGK_PRESENT_DESTINATION_INDEX] 元素(即元素 2)的成员访问目标分配句柄。
在分配列表的元素中指定的句柄是驱动程序的 DxgkDdiOpenAllocation 函数打开分配时返回的设备特定句柄。 如果作不存在源或目标,则 hDeviceSpecificAllocation 相应元素的成员 NULL。 此成员从 Windows 7 开始可用。
注意
分配列表(元素 0)中第一个元素 成员的 hDeviceSpecificAllocation 始终 NULL。
[in] pAllocationInfo
保留供系统使用。 显示微型端口驱动程序应忽略此成员。 此成员从 Windows 7 开始可用。
[in] pPresentMultiPlaneOverlayInfo
指向 DXGK_PRESENTMULTIPLANEOVERLAYINFO 类型的结构的指针,该结构指定要显示的 VidPN 输入和覆盖平面上的信息。
从 Windows 8 开始支持。
[in/out] pPatchLocationListOut
显示微型端口驱动程序填充的修补程序位置列表 D3DDDI_PATCHLOCATIONLIST 结构的数组。 在驱动程序从调用其 DxgkDdiPresent 函数返回之前,驱动程序必须将 pPatchLocationListOut 设置为驱动程序更新的最后一个D3DDDI_PATCHLOCATIONLIST元素之后的下一个D3DDDI_PATCHLOCATIONLIST元素。
[in] PatchLocationListOutSize
pPatchLocationListOut 指定的修补程序位置列表中的元素数。 显示微型端口驱动程序不需要填充整个列表中的所有元素;驱动程序只能使用描述 DMA 缓冲区中修补程序位置所必需的元素。
[in/out] MultipassOffset
如果显示微型端口驱动程序的 DxgkDdiPresent 函数必须返回STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER以获取新的 DMA 缓冲区,则指定复制作的进度的 UINT 值。 当驱动程序的 DxgkDdiPresent 函数首次使用新的 RECT 列表调用时,MultipassOffset 初始化为零。 在驱动程序从 DxgkDdiPresent 调用返回之前,驱动程序会设置 MultipassOffset,以显示后续 DxgkDdiPresent 调用的复制进度。 Microsoft DirectX 图形内核子系统不会进一步更改该值。
[in] Color
颜色填充作中的A8R8G8B8颜色(由 标志 成员中设置的 ColorFill 位字段标志指定)或由 SrcColorKey 或 DstColorKey 位字段标志指定的颜色键作。 请注意,随时仅设置 ColorFill、SrcColorKey和 DstColorKey 位字段标志之一。
如果主要格式为淡化 RGB,Color 包含调色板索引,而不是来自 D3DDDIFORMAT 枚举类型的D3DDDIFMT_A8R8G8B8值。
[in] DstRect
用于计算拉伸因子的目标矩形 RECT 结构。
[in] SrcRect
用于计算拉伸因子的源矩形的 RECT 结构。
[in] SubRectCnt
pDstSubRects 指定的数组中的目标子矩形的数目。
[in] pDstSubRects
DxgkDdiPresent 函数复制到的目标子矩形列表的 RECT 结构数组。
[in] FlipInterval
一个 D3DDDI_FLIPINTERVAL_TYPE类型的值,该值指示翻转间隔(即,如果翻转发生在零、一、二、三或四个垂直同步之后)。
[in] Flags
一个 DXGK_PRESENTFLAGS 结构,用于标识要执行的当前作的类型(在位字段标志中)。 请注意,ColorFill、SrcColorKey,Flags 中的 DstColorKey 位字段标志是互斥的。
[in] DmaBufferSegmentId
分页 DMA 缓冲区的内存段的标识符。 如果标识符为零,则 DMA 缓冲区未正确分页。
[in] DmaBufferPhysicalAddress
PHYSICAL_ADDRESS 数据类型(定义为 LARGE_INTEGER),指示 DMA 缓冲区在其中分页的物理地址。 如果物理地址为零,则 DMA 缓冲区未正确分页。
[in] Reserved
保留供系统使用。 驱动程序应忽略此成员。
DmaBufferGpuVirtualAddress
一种 D3DGPU_VIRTUAL_ADDRESS 数据类型,指示对 DMA 缓冲区进行分页的虚拟地址。 如果物理地址为零,则 DMA 缓冲区未正确分页。
NumSrcAllocations
源中的上下文分配数。
NumDstAllocations
目标中的上下文分配数。
PrivateDriverDataSize
pPrivateDriverData的大小。
pPrivateDriverData
指向包含可选专用驱动程序数据的缓冲区的指针。
言论
SrcRect 和 DstRect 成员指定的源和目标矩形区域的比率用于计算拉伸因子。 驱动程序在执行复制作时,可以考虑拉伸因子计算。
执行任何剪辑不需要驱动程序。 Microsoft DirectX 图形内核子系统预先设置目标子矩形列表,pDstSubRects 成员指定的目标矩形 DstRect 成员指定的目标矩形的坐标(主矩形)。 请注意,如果在 pDstSubRects中提供了目标子矩形的列表,驱动程序应仅使用 SrcRect,DstRect 来计算拉伸因子,并且应使用目标子矩形的坐标进行实际复制作。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |