D3D11_RESOURCE_MISC_FLAG列舉 (d3d11.h)

識別資源的選項。

Syntax

typedef enum D3D11_RESOURCE_MISC_FLAG {
  D3D11_RESOURCE_MISC_GENERATE_MIPS = 0x1L,
  D3D11_RESOURCE_MISC_SHARED = 0x2L,
  D3D11_RESOURCE_MISC_TEXTURECUBE = 0x4L,
  D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10L,
  D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20L,
  D3D11_RESOURCE_MISC_BUFFER_STRUCTURED = 0x40L,
  D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80L,
  D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100L,
  D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200L,
  D3D11_RESOURCE_MISC_SHARED_NTHANDLE = 0x800L,
  D3D11_RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000L,
  D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000L,
  D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000L,
  D3D11_RESOURCE_MISC_GUARDED = 0x8000L,
  D3D11_RESOURCE_MISC_TILE_POOL = 0x20000L,
  D3D11_RESOURCE_MISC_TILED = 0x40000L,
  D3D11_RESOURCE_MISC_HW_PROTECTED = 0x80000L,
  D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE,
  D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER
} ;

常數

 
D3D11_RESOURCE_MISC_GENERATE_MIPS
值: 0x1L
在紋理資源上使用 ID3D11DeviceContext::GenerateMips 來啟用 MIP 地圖產生。 必須使用系 結旗標 來建立資源,以指定資源是轉譯目標和著色器資源。
D3D11_RESOURCE_MISC_SHARED
值: 0x2L
啟用兩個或多個 Direct3D 裝置之間的資源數據共用。 唯一可以共享的資源是 2D 非 mipmapped 紋理。


D3D11_RESOURCE_MISC_SHAREDD3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 互斥。


WARPREF 裝置不支援共享資源。
如果您嘗試在 WARPREF 裝置上使用此旗標建立資源,則 create 方法會傳回 E_OUTOFMEMORY 錯誤碼。


注意從 Windows 8 開始,WARP 裝置完全支援共用資源。

 

注意從 Windows 8 開始,建議您改為使用 D3D11_RESOURCE_MISC_SHARED_NTHANDLED3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 旗標的組合,在兩個或更多 Direct3D 裝置之間啟用資源數據共用。

 
D3D11_RESOURCE_MISC_TEXTURECUBE
值: 0x4L
將資源設定為從包含 6 個紋理的 Texture2DArray 建立的 Cube 紋理。
D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS
值: 0x10L
啟用 GPU 產生的內容實例。
D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS
值: 0x20L
啟用資源作為 位元組位址緩衝區
D3D11_RESOURCE_MISC_BUFFER_STRUCTURED
值: 0x40L
啟用資源作為 結構化緩衝區
D3D11_RESOURCE_MISC_RESOURCE_CLAMP
值: 0x80L
啟用具有 MIP 對應限制的資源,以搭配 ID3D11DeviceContext::SetResourceMinLOD 使用。
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX
值: 0x100L
使用 IDXGIKeyedMutex::AcquireSync 和 來同步處理資源
IDXGIKeyedMutex::ReleaseSync Api。
下列採用 D3D11_RESOURCE_MISC_FLAG 參數的 Direct3D 11 資源建立 API 已擴充以支援新的旗標。


如果您使用 D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 旗標集呼叫上述任一方法,傳回的介面將支援 IDXGIKeyedMutex 介面。 您可以使用 IUnknown::QueryInterface,從資源擷取 IDXGIKeyedMutex 介面的指標。 IDXGIKeyedMutex 介面會實作 IDXGIKeyedMutex::AcquireSyncIDXGIKeyedMutex::ReleaseSync API,以同步存取介面。 建立表面的裝置,以及使用 OpenSharedResource 開啟表面的任何其他裝置,必須先呼叫 IDXGIKeyedMutex::AcquireSync ,才能對表面發出任何轉譯命令。 當這些裝置完成轉譯時,他們必須呼叫 IDXGIKeyedMutex::ReleaseSync


D3D11_RESOURCE_MISC_SHAREDD3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 互斥。


WARPREF 裝置不支援共享資源。
如果您嘗試在 WARPREF 裝置上使用此旗標建立資源,則 create 方法會傳回 E_OUTOFMEMORY 錯誤碼。


注意從 Windows 8 開始,WARP 裝置完全支援共用資源。

 
D3D11_RESOURCE_MISC_GDI_COMPATIBLE
值: 0x200L
啟用與 GDI 相容的資源。 您必須在搭配 GDI 使用的介面上設定 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 旗標。 設定 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 旗標可透過 IDXGISurface1::GetDC在介面上呈現GDI。


當您在交換鏈結中建立紋理或使用該紋理時,請考慮使用D3D11_RESOURCE_MISC_GDI_COMPATIBLE下列程式設計秘訣:


  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX和D3D11_RESOURCE_MISC_GDI_COMPATIBLE互斥。 因此,請勿將它們一起使用。

  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP和D3D11_RESOURCE_MISC_GDI_COMPATIBLE互斥。 因此,請勿將它們一起使用。

  • 您必須將紋理系結為輸出合併階段的轉譯目標。 例如,在 D3D11_TEXTURE2D_DESC 結構的 BindFlags 成員中設定 D3D11_BIND_RENDER_TARGET 旗標。

  • 您必須將 MIP 地圖層級數目上限設定為 1。 例如,將 D3D11_TEXTURE2D_DESC 結構的 MipLevels 成員設定為 1。

  • 您必須指定紋理需要 GPU 的讀取和寫入存取權。 例如,將 D3D11_TEXTURE2D_DESC 結構的Usage成員設定為 D3D11_USAGE_DEFAULT。


  • 您必須將紋理格式設定為下列其中一種類型。


    • DXGI_FORMAT_B8G8R8A8_UNORM

    • DXGI_FORMAT_B8G8R8A8_TYPELESS

    • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB

    例如,將 D3D11_TEXTURE2D_DESC 結構的 Format 成員設定為下列其中一種類型。

  • 您無法搭配多重取樣使用D3D11_RESOURCE_MISC_GDI_COMPATIBLE。 因此,將 DXGI_SAMPLE_DESC 結構的 Count 成員設定為 1。 然後,將 D3D11_TEXTURE2D_DESC 結構的SampleDesc成員設定為此DXGI_SAMPLE_DESC結構。

D3D11_RESOURCE_MISC_SHARED_NTHANDLE
值: 0x800L
設定此旗標,以在建立共用資源時啟用NT HANDLE 值的使用。 藉由啟用此旗標,您可以取代使用現有的 HANDLE 值。

值會指定新的共享資源類型,指示運行時間使用共用資源的NT HANDLE 值。 然後,運行時間必須確認共用資源可在指定 功能層級的所有硬體上運作。


若未設定此旗標,運行時間不會嚴格驗證共用資源參數 (,也就是格式、旗標、使用方式等) 。 當運行時間未驗證共用資源參數時,大部分 Direct3D API 的行為可能未定義,而且可能會因驅動程式而異。

Direct3D 11 和更早版本: 在 Direct3D 11.1 之前,不支援此值。
D3D11_RESOURCE_MISC_RESTRICTED_CONTENT
值: 0x1000L
設定此旗標以指出資源可能包含受保護的內容;因此,只有在驅動程式和硬體支援內容保護時,操作系統才應該使用資源。 如果驅動程式和硬體不支援內容保護,而且您嘗試使用此旗標建立資源,則資源建立會失敗。

Direct3D 11: 在 Direct3D 11.1 之前,不支援此值。
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE
值: 0x2000L
設定此旗標,指出操作系統會限制共用介面的存取。 只有當您建立共用介面時,才能將此旗標與 D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER 旗標搭配使用。 建立共用資源的程式一律可以開啟共享資源。

Direct3D 11: 在 Direct3D 11.1 之前,不支援此值。
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER
值: 0x4000L
設定此旗標,指出驅動程式會限制對共用表面的存取。 您可以使用此旗標搭配 D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE 旗標,而且只有在您建立共用介面時。 建立共用資源的程式一律可以開啟共享資源。

Direct3D 11: 在 Direct3D 11.1 之前,不支援此值。
D3D11_RESOURCE_MISC_GUARDED
值: 0x8000L
設定此旗標以指出資源受到防護。 IDCompositionSurface::BeginDraw (DirectComposition) 和 ISurfaceImageSourceNative::BeginDraw (Windows 執行階段) API 會傳回這類資源。 針對這些 API,您會在介面上提供感興趣的區域 (ROI) 以進行更新。 此表面與多個轉譯目標不相容, (MRT) 。

受防護的資源會自動將所有寫入限制為與上述其中一個 API 相關的區域。 此外,資源會強制執行對 ROI 的存取,但有下列限制:


Direct3D 11: 在 Direct3D 11.1 之前,不支援此值。
D3D11_RESOURCE_MISC_TILE_POOL
值: 0x20000L
設定此旗標以指出資源是圖格集區。

Direct3D 11: 在 Direct3D 11.2 之前,不支援此值。
D3D11_RESOURCE_MISC_TILED
值: 0x40000L
設定此旗標以指出資源是圖格資源。

Direct3D 11: 在 Direct3D 11.2 之前,不支援此值。
D3D11_RESOURCE_MISC_HW_PROTECTED
值: 0x80000L
設定此旗標以指出應該建立資源,使其受硬體保護。 如果不支援硬體內容保護,資源建立將會失敗。

此旗標具有下列限制:


  • 此旗標不能與下列 D3D11_USAGE 值搭配使用:

    • D3D11_USAGE_DYNAMIC

    • D3D11_USAGE_STAGING



  • 此旗標不能與下列 D3D11_BIND_FLAG 值搭配使用。

    • D3D11_BIND_VERTEX_BUFFER

    • D3D11_BIND_INDEX_BUFFER



  • 無法指定 CPU 存取旗標。


注意  

使用此旗標建立紋理並不會自動保證會針對基礎配置啟用硬體保護。 某些實作需要先初始化DRM元件,才能保證保護。


 

注意從 Windows 10 開始,支援此列舉值。
D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE
讓資源能夠使用 可顯示表面 功能。 您必須搭配D3D11_RESOURCE_MISC_SHAREDD3D11_RESOURCE_MISC_SHARED_NTHANDLE使用D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE
D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER
TBD

備註

此列舉用於D3D11_BUFFER_DESCD3D11_TEXTURE1D_DESCD3D11_TEXTURE2D_DESC D3D11_TEXTURE3D_DESC

這些旗標可以透過位 OR 結合。

使用 D3D11_CPU_ACCESS 旗標建立資源時,無法使用 D3D11_RESOURCE_MISC_FLAG

規格需求

需求
標頭 d3d11.h

另請參閱

資源列舉