共用方式為


D3D11_RESOURCE_FLAGS 結構 (d3d11on12.h)

ID3D11On12Device::CreateWrappedResource 搭配使用,以覆寫資源屬性或堆積屬性所推斷的旗標,包括系結旗標、錯誤旗標和 CPU 存取旗標。

語法

typedef struct D3D11_RESOURCE_FLAGS {
  UINT BindFlags;
  UINT MiscFlags;
  UINT CPUAccessFlags;
  UINT StructureByteStride;
} D3D11_RESOURCE_FLAGS;

成員

BindFlags

系結旗標必須完全推斷或完全指定,才能讓圖形驅動程式將一般 D3D12 資源的範圍限定為 D3D11 可以了解的專案。

如果指定的系結旗標不受提供的資源支援,則會傳回錯誤。

將不會假設下列系結旗標 (D3D11_BIND_FLAG 列舉常數) ,而且必須指定,才能讓資源以此類方式使用:

  • D3D11_BIND_VERTEX_BUFFER
  • D3D11_BIND_INDEX_BUFFER
  • D3D11_BIND_CONSTANT_BUFFER
  • D3D11_BIND_STREAM_OUTPUT
  • D3D11_BIND_DECODER
  • D3D11_BIND_VIDEO_ENCODER
系統會根據對應的 D3D12 資源旗標存在來假設下列系結旗標,而且可以藉由指定系結旗標來移除:
  • D3D11_BIND_SHADER_RESOURCE,只要D3D12_RESOURCE_MISC_DENY_SHADER_RESOURCE不存在
  • D3D11_BIND_RENDER_TARGET,如果存在D3D12_RESOURCE_MISC_ALLOW_RENDER_TARGET
  • D3D11_BIND_DEPTH_STENCIL,如果存在D3D12_RESOURCE_MISC_ALLOW_DEPTH_STENCIL
  • D3D11_BIND_UNORDERED_ACCESS,如果存在D3D12_RESOURCE_MISC_ALLOW_UNORDERED_ACCESS
轉譯目標或 UAV 緩衝區可以包裝而不覆寫旗標;但 VB/IB/CB/SO 緩衝區必須手動指定系結旗標,因為這些旗標在 Direct3D 11 中互斥。

MiscFlags

如果錯誤旗標為非零,則任何指定的旗標都會使用推斷的旗標,進入最終資源還原。 您可以部分指定 Misc 旗標以新增功能,但無法遮罩隱含的 Misc 旗標。

不會假設下列錯誤旗標 (D3D11_RESOURCE_MISC_FLAG 列舉常數) :

  • D3D11_RESOURCE_MISC_GENERATE_MIPS (与 CLAMP) 衝突。
  • D3D11_RESOURCE_MISC_TEXTURECUBE (更改默认检视行为) 。
  • D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS (与某些系结旗标) 獨佔。
  • D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS (与其他类型的UAV) 獨佔。
  • D3D11_RESOURCE_MISC_BUFFER_STRUCTURED (与其他类型的UAV) 獨佔。
  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP (禁止 D3D10 QIS,與GENERATE_MIPS) 冲突。
  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX。 可以建立 D3D11 索引鍵的 Mutex 資源、為其建立共用句柄,並透過 11on12 或 D3D11 加以開啟。
系統會假設下列錯誤旗標,而且無法從產生的資源還原中移除。 如果已設定其中一項,且 D3D12 資源不支援它,建立將會失敗:
  • 如果有適當的堆積錯誤旗標,D3D11_RESOURCE_MISC_SHARED、D3D11_RESOURCE_MISC_SHARED_NTHANDLE、D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE。
  • D3D11_RESOURCE_MISC_GDI_COMPATIBLE,如果 D3D12 資源與 GDI 相容。
  • D3D11_RESOURCE_MISC_TILED,如果 D3D12 資源是透過 CreateReservedResource 建立的。
  • D3D11_RESOURCE_MISC_TILE_POOL,如果傳入 D3D12 堆積。
針對此 API 指定下列錯誤旗標無效:
  • D3D11_RESOURCE_MISC_RESTRICTED_CONTENT,因為 D3D12 僅支援硬體保護。
  • D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER不存在於 12 中,而且無法在資源建立之後加入。
  • D3D11_RESOURCE_MISC_GUARDED僅供內部建立機制設定。

CPUAccessFlags

CPUAccessFlags 不會從 D3D12 資源推斷。 這是因為所有資源都會被視為D3D11_USAGE_DEFAULT,因此 CPUAccessFlags 會 強制驗證,這會假設預設緩衝區或紋理的 對應 。 包裝的資源不支援 Map (DISCARD) 。 包裝的資源不支援 Map (NO_OVERWRITE) ,但可以改為對應基礎 D3D12 資源來實作。 在包裝的資源上發出 對應 呼叫,將會與針對該資源提交的所有 D3D11 工作同步處理,除非使用了 DO_NOT_WAIT 旗標。

StructureByteStride

當緩衝區代表結構化緩衝區時,緩衝區結構中的每個專案的大小 (位元組) 。

備註

搭配 CreateWrappedResource 使用此結構。

規格需求

需求
標頭 d3d11on12.h

另請參閱

11on12 結構