共用方式為


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 結構的陣列。 驅動程式會透過 hDeviceSpecificAllocation pAllocationList [DXGK_PRESENT_SOURCE_INDEX] 元素的成員來存取來源配置句柄(也就是元素 1)。 驅動程式會透過 hDeviceSpecificAllocation pAllocationList [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 位欄位字段旗標在 Flags 成員中設定,或是由 SrcColorKeyDstColorKey 位欄位旗標所指定的色彩索引鍵作業。 請注意,隨時只會設定其中一個 ColorFillSrcColorKeyDstColorKey 位欄位字段旗標。

如果主要格式為 palettized RGB,Color 包含調色盤索引,而不是來自 D3DDDIFORMAT 列舉類型的D3DDDIFMT_A8R8G8B8值。

[in] DstRect

用來計算延展因數之目的矩形的 RECT 結構。

[in] SrcRect

來源矩形的 RECT 結構,用來計算延展因數。

[in] SubRectCnt

pDstSubRects 指定之陣列中的目的地子矩形數目。

[in] pDstSubRects

目的地子矩形清單的 RECT 結構數位,DxgkDdiPresent 函式會複製到其中。

[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