共用方式為


DXGI1_2_DDI_BASE_FUNCTIONS 結構 (dxgiddi.h)

包含 Windows 顯示驅動程式模型 (WDDM) 1.2 和更新版本使用者模式顯示驅動程式可以實作的函式指標,例如將轉譯的畫面呈現至輸出、控制 gamma、取得共用和 Windows 圖形裝置介面 (GDI) 互通表面的通知,以及管理全螢幕轉換。

語法

typedef struct DXGI1_2_DDI_BASE_FUNCTIONS {
  HRESULT()(DXGI_DDI_ARG_PRESENT *) * pfnPresent;
  HRESULT()(DXGI_DDI_ARG_GET_GAMMA_CONTROL_CAPS *) * pfnGetGammaCaps;
  HRESULT()(DXGI_DDI_ARG_SETDISPLAYMODE *) * pfnSetDisplayMode;
  HRESULT()(DXGI_DDI_ARG_SETRESOURCEPRIORITY *) * pfnSetResourcePriority;
  HRESULT()(DXGI_DDI_ARG_QUERYRESOURCERESIDENCY *) * pfnQueryResourceResidency;
  HRESULT()(DXGI_DDI_ARG_ROTATE_RESOURCE_IDENTITIES *) * pfnRotateResourceIdentities;
  HRESULT()(DXGI_DDI_ARG_BLT *) * pfnBlt;
  HRESULT()(DXGI_DDI_ARG_RESOLVESHAREDRESOURCE *) * pfnResolveSharedResource;
  HRESULT()(DXGI_DDI_ARG_BLT1 *) * pfnBlt1;
  HRESULT()(DXGI_DDI_ARG_OFFERRESOURCES *) * pfnOfferResources;
  HRESULT()(DXGI_DDI_ARG_RECLAIMRESOURCES *) * pfnReclaimResources;
  HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *) * pfnGetMultiplaneOverlayCaps;
  HRESULT()(void *) * pfnGetMultiplaneOverlayFilterRange;
  HRESULT()(DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT *) * pfnCheckMultiplaneOverlaySupport;
  HRESULT()(DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *) * pfnPresentMultiplaneOverlay;
} DXGI1_2_DDI_BASE_FUNCTIONS;

成員

pfnPresent

驅動程式 PresentDXGI 函式的指標。

pfnGetGammaCaps

驅動程式 GetGammaCapsDXGI 函式的指標。

pfnSetDisplayMode

驅動程式 SetDisplayModeDXGI 函式的指標。

pfnSetResourcePriority

驅動程式 SetResourcePriorityDXGI 函式的指標。

pfnQueryResourceResidency

驅動程式 QueryResourceResidencyDXGI 函式的指標。

pfnRotateResourceIdentities

驅動程式 RotateResourceIdentitiesDXGI 函式的指標。

pfnBlt

驅動程式 BltDXGI 函式的指標。

Direct3D 執行時間可能會設定 pBltData 參數指向之DXGI_DDI_ARG_BLT結構的 Flags 成員,以便要求 Blt1DXGI 函式執行位區塊傳輸 (bitblt) 作業,以解析多重取樣資源、執行色彩格式轉換,並一次執行延展或壓縮。 不過,Direct3D 運行時間永遠不會將 DXGI_DDI_ARG_BLT1Flags 成員設定為零 (,也就是說,不會將旗標設定) 與DXGI_DDI_ARG_BLT1 ( (中設定的DXGI_DDI_MODE_ROTATION_IDENTITY值一起設定,表示沒有旋轉) 執行直接記憶體複製作業。 相反地,除非這兩個資源都是多重取樣,否則 Direct3D 運行時間會呼叫驅動程式的 ResourceCopyResourceCopyRegion (D3D11_1) 函式來執行直接記憶體複製作業。

使用者模式顯示驅動程式所執行的延展或壓縮質量必須與雙向篩選執行延展或壓縮一樣好。

Direct3D 執行時間會不常呼叫驅動程式的 Blt1DXGI 函式。 也就是說,運行時間應該在每個畫面上呼叫 Blt1DXGI 不超過一次或兩次,因為運行時間主要使用 Blt1DXGI 來支持簡報。

當運行時間呼叫 Blt1DXGI 進行簡報時,運行時間會在 DXGI_DDI_ARG_BLT1Flags 成員中設定 Present 位字段旗標。 運行時間會設定 Present 位字段旗標,通知驅動程式有 bitblt 的額外需求,而且可能需要額外的同步處理 (例如,運行時間可能需要在包含兩個圖形適配卡的計算機組態中執行額外的同步處理,這些適配卡每一個處理顯示器個別部分) 。 設定 [目前 位欄位] 旗標時,驅動程式應該從應用程式的後台緩衝區執行複製作業到 DWM 的共用介面。 因為這種複製作業的同步處理不嚴重,所以卸除成品應該是用戶體驗最差的成品類型。 針對這種類型的複製作業,驅動程式應該先解析到目的地介面,然後就地著色轉換結果,因為可能的成品會更糟,所以驅動程式不應該使用多傳遞方法。

如果驅動程序支援在建立主要介面 (期間傳DXGI_DDI_ERR_UNSUPPORTED請從呼叫CreateResource (D3D10 ) 函式傳回D3D10DDIARG_CREATERESOURCE的 bindFlags 成員以及 D3D10DDIARG_CREATERESOURCEpPrimaryDesc 成員中設定 D3D10_DDI_BIND_PRESENT 旗標DXGI_DDI_ERR_UNSUPPORTED設定為非 NULL) ,驅動程式也必須在複製作業期間支援輪替。 如果驅動程式從未從呼叫其 CreateResource (D3D10) CreateResource (D3D11 ) 函式傳回DXGI_DDI_ERR_UNSUPPORTED,運行時間永遠不會將DXGI_DDI_MODE_ROTATION_ROTATE90DXGI_DDI_MODE_ROTATION_ROTATE180DXGI_DDI_MODE_ROTATION_ROTATE270值傳遞至 DXGI_DDI_ARG_BLT1Rotate 成員。 因此,在此情況下,驅動程式的 Blt1DXGI 函式不需要支援旋轉。

運行時間會在 DXGI_DDI_ARG_BLT1的 Rotate 成員中設定值,以指出在驅動程式將內容複製到目的地之前,以反順時針旋轉來源的內容數。 旋轉是以90度的增量指定。

注意

當驅動程式的 Blt1DXGI 函式將 sRGB 格式的內容從來源介面複製到非 sRGB 目的地介面時,驅動程式應該將 sRGB 內容複製到未變更 (,驅動程式不應該執行 sRGB 到線性轉換) 。

來源限制

Blt1DXGI 函式一律會使用整個來源子資源 (與某些子矩形區域) 來執行 bitblt 作業。 此外,當來源在呼叫使用者模式顯示驅動程式的 CreateResource (D3D10 ) 或 CreateResource (D3D11) 函式中建立來源時,來源是在 ResourceDimensionD3D11DDIARG_CREATERESOURCED3D10DDIARG_CREATERESOURCE 成員中指定的D3D10DDIRESOURCE_TEXTURE2D表示法) (。 當運行時間設定DXGI_DDI_ARG_BLT1Flags 成員中的 Resolve 位字段時,來源是多重取樣資源。 來源資源僅限於D3D10DDIARG_CREATERESOURCE或D3D11DDIARG_CREATERESOURCEBindFlags 成員中設定D3D10_DDI_BIND_PRESENT旗標的資源。 在 D3D10DDIARG_CREATERESOURCED3D11DDIARG_CREATERESOURCE) 的 Format 成員中指定的來源 (格式僅限於顯示模式格式,由下列來自DXGI_FORMAT列舉的值所指定:

  • DXGI_FORMAT_B5G6R5_UNORM
  • DXGI_FORMAT_B5G5R5A1_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM (請參閱下列附注。)
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_R16G16B16A16_FLOAT
  • DXGI_FORMAT_R10G10B10A2_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB

注意

如果驅動程式支援來源格式 DXGI_FORMAT_B8G8R8A8_UNORM,則適用下列限制:

  • 當驅動程式從浮點格式執行 bitblt 運算到整數格式,例如BGRA8888時,它必須隱含地將 gamma 編碼為結果。
  • 相反地,當驅動程式從整數格式執行 bitblt 運算到浮點格式時,它必須隱含地從結果中移除 gamma 編碼。

目的地限制

目的地也是 D3D10DDIRESOURCE_TEXTURE2D 表示法。 目的地的格式也會限制為顯示模式格式。 目的地資源僅限於系結為轉譯目標的資源, (D3D10_DDI_BIND_RENDER_TARGET在D3D10DDIARG_CREATERESOURCED3D11DDIARG_CREATERESOURCE) BindFlags 成員中設定。

建立立體後端緩衝區

從 Windows 8 開始,如果驅動程式必須建立立體後端緩衝區,它應該分別設定D3D10DDIARG_CREATERESOURCE或D3D11DDIARG_CREATERESOURCE結構的成員,並分別由 CreateResource (D3D10 ) 或 CreateResource (D3D11) 函式所指向的 pCreateResource 參數,如下所示:

  1. ArraySize 成員設定為 2 的值。
  2. BindFlags 成員中設定D3D10_DDI_BIND_PRESENT旗標值。

此外,為了支援立體呈現,BltDXGI 函式必須允許來源和目的地資源範圍內DXGI_DDI_ARG_BLT結構之 DstSubresourceSrcSubresource 成員的任何值。

pfnResolveSharedResource

驅動程式 ResolveSharedResourceDXGI 函式的指標。

pfnBlt1

驅動程式 Blt1DXGI 函式的指標。

pfnOfferResources

驅動程式 pfnOfferResources 函式的指標。

pfnReclaimResources

由 DXGI 執行時間呼叫,以回收使用者模式顯示驅動程式先前提供以供重複使用的視訊記憶體資源。 由WDDM 1.2和更新版本的使用者模式顯示驅動程序實作。

pfnGetMultiplaneOverlayCaps

由 Microsoft DirectX 圖形基礎結構 (DXGI) 運行時間呼叫,要求使用者模式顯示驅動程式取得基本的重疊平面功能。 選擇性地由 Windows 顯示驅動程式模型 (WDDM) 1.3 和更新版本的使用者模式顯示驅動程式實作。 pfnGetMultiplaneOverlayCaps 的語法如下:

pfnGetMultiPlaneOverlayCaps GetMultiPlaneOverlayCaps;

HRESULT __stdcall* GetMultiPlaneOverlayCaps(
    DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *pCaps
)
{ ... }

pCaps 參數是指定重疊平面功能的DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS結構的指標。

pfnGetMultiplaneOverlayCaps 會傳回下列其中一個值:

  • S_OK:驅動程式已成功提供重疊平面功能。
  • D3DDDIERR_DEVICEREMOVED:驅動程式偵測到顯示適配卡已移除,因此驅動程式未完成作業。 如果驅動程式不知道適配卡移除,則不需要驅動程式才能傳回此錯誤碼。

pfnGetMultiplaneOverlayFilterRange

這個成員是保留的,而且應該設定為零。 從 Windows 8.1 開始支援。

pfnCheckMultiplaneOverlaySupport

由 Microsoft DirectX 圖形基礎結構 (DXGI) 運行時間呼叫,以檢查多平面重疊的硬體支援詳細數據。 pfnCheckMultiplaneOverlaySupport 的語法為:

PFND3DDDI_CHECKMULTIPLANEOVERLAYSUPPORT pfnCheckMultiplaneOverlaySupport;

HRESULT __stdcall* pfnCheckMultiplaneOverlaySupport(
   D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT *pSupport
)
{ ... }

pSupport 參數是描述如何顯示至目的地介面之DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT結構的指標。

如果 pfnCheckMultiplaneOverlaySupport 成功,則會傳回S_OK。 否則,它會傳回 HRESULT 錯誤碼。

pfnPresentMultiplaneOverlay

驅動程式 pfnPresentMultiplaneOverlay (DXGI) 函式的指標。 從 Windows 8.1 開始支援。

pSupport

描述如何顯示至目的地介面之 DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT 結構的指標。

規格需求

需求
最低支援的用戶端 Windows 8、WDDM 1.2
最低支援的伺服器 Windows Server 2012
標頭 dxgiddi.h (包含 D3d10umddi.h)

另請參閱

CreateDevice (D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_3_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS