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 位字段标志指定)或由 SrcColorKeyDstColorKey 位字段标志指定的颜色键作。 请注意,随时仅设置 ColorFillSrcColorKeyDstColorKey 位字段标志之一。

如果主要格式为淡化 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 结构,用于标识要执行的当前作的类型(在位字段标志中)。 请注意,ColorFillSrcColorKeyFlags 中的 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

指向包含可选专用驱动程序数据的缓冲区的指针。

言论

SrcRectDstRect 成员指定的源和目标矩形区域的比率用于计算拉伸因子。 驱动程序在执行复制作时,可以考虑拉伸因子计算。

执行任何剪辑不需要驱动程序。 Microsoft DirectX 图形内核子系统预先设置目标子矩形列表,pDstSubRects 成员指定的目标矩形 DstRect 成员指定的目标矩形的坐标(主矩形)。 请注意,如果在 pDstSubRects中提供了目标子矩形的列表,驱动程序应仅使用 SrcRectDstRect 来计算拉伸因子,并且应使用目标子矩形的坐标进行实际复制作。

要求

要求 价值
最低支持的客户端 Windows Vista
标头 d3dkmddi.h (包括 D3dkmddi.h)

另请参阅

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

RECT