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 結構的陣列。 驅動程式會透過 pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (元素的 hDeviceSpecificAllocation 成員存取來源配置句柄,也就是元素 1) 。 驅動程式會透過 pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (元素的 hDeviceSpecificAllocation 成員存取目的地配置句柄,也就是元素 2) 。

配置清單中的元素中指定的句柄是驅動程式的 DxgkDdiOpenAllocation 函式在開啟配置時所傳回的裝置特定句柄。 如果作業沒有來源或目的地,則個別元素的 hDeviceSpecificAllocation 成員為 NULL。 此成員從 Windows 7 開始可供使用。

注意

配置清單中第一個專案的 hDeviceSpecificAllocation 成員 (元素 0) 一律為 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色彩,該作業是由 Flags 成員中設定的 ColorFill 位字段旗標所指定,或是由 SrcColorKeyDstColorKey 位欄位字段旗標指定的色彩索引鍵作業所指定。 請注意,隨時只會設定其中一個 ColorFillSrcColorKeyDstColorKey 位字段旗標。

如果主要格式為 palettized 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 結構,可識別要執行的位字段旗標中目前作業的類型。 請注意,Flags 中的 ColorFillSrcColorKeyDstColorKey 位字段旗標互斥。

[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 (include D3dkmddi.h)

另請參閱

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

矩形