D3D12_RESOURCE_DESC 結構 (d3d12.h)

描述資源,例如紋理。 此結構會廣泛使用。

語法

typedef struct D3D12_RESOURCE_DESC {
  D3D12_RESOURCE_DIMENSION Dimension;
  UINT64                   Alignment;
  UINT64                   Width;
  UINT                     Height;
  UINT16                   DepthOrArraySize;
  UINT16                   MipLevels;
  DXGI_FORMAT              Format;
  DXGI_SAMPLE_DESC         SampleDesc;
  D3D12_TEXTURE_LAYOUT     Layout;
  D3D12_RESOURCE_FLAGS     Flags;
} D3D12_RESOURCE_DESC;

成員

Dimension

D3D12_RESOURCE_DIMENSION的其中一個成員,指定資源 (維度,例如D3D12_RESOURCE_DIMENSION_TEXTURE1D) ,或是否為緩衝區 ( (D3D12_RESOURCE_DIMENSION_BUFFER) 。

Alignment

指定對齊方式。

Width

指定資源的寬度。

Height

指定資源的高度。

DepthOrArraySize

指定資源的深度,如果是 3D,則指定其為 1D 或 2D 資源的數位大小。

MipLevels

指定 MIP 層級的數目。

Format

指定 DXGI_FORMAT的一個成員。

SampleDesc

指定 DXGI_SAMPLE_DESC 結構。

Layout

指定 D3D12_TEXTURE_LAYOUT的一個成員。

Flags

位 OR'd 旗標,如 D3D12_RESOURCE_FLAGS 列舉常數。

備註

使用這個結構搭配:

兩個常見的資源是緩衝區和紋理,這兩者都使用此結構,但具有相當不同的欄位用法。

緩衝區

緩衝區是連續的記憶體區域。 寬度 可以介於 1 到已認可資源的 maxGPUVirtualAddressBitsPerResource 字段 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT 或已認可資源的 MaxGPUVirtualAddressBitsPerProcess 字段之間。 不過,GPU 虛擬位址空間耗盡、記憶體落地預算 (請參閱 IDXGIAdapter3::QueryVideoMemoryInfo) ,或系統記憶體可能很容易先發生。

對齊 必須是 64KB (D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) 或 0,這實際上是 64KB。

HeightDepthOrArraySizeMipLevels 必須為 1。

格式 必須是DXGI_FORMAT_UNKNOWN。

SampleDesc.Count 必須是 1, 而 Quality 必須是 0。

面配置必須D3D12_TEXTURE_LAYOUT_ROW_MAJOR,因為應用程式和數據列主要紋理數據通常會透過緩衝區封送處理,所以緩衝區內存配置是瞭解的。

仍然必須由應用程式正確填入緩衝區,但有次要例外狀況。 不過,應用程式可以使用大部分的功能支援,而不需要擔心對緩衝區的效率影響。 旗標欄位是用來控制與紋理相關的屬性。

紋理

紋理是連續記憶體區域中紋素的多維度排列方式,高度優化以最大化轉譯和取樣的頻寬。 紋理大小很難預測,而且會因配接器而異。 應用程式必須使用 ID3D12Device::GetResourceAllocationInfo 來正確瞭解其大小。

每個格式都不支援TEXTURE1D、TEXTURE2D和TEXTURE3D。 請參閱 D3D12_FORMAT_SUPPORT1中使用D3D12_FORMAT_SUPPORT1_TEXTURE1D、D3D12_FORMAT_SUPPORT1_TEXTURE2D和D3D12_FORMAT_SUPPORT1_TEXTURE3D。

WidthHeightDepthOrArraySize 必須介於 1 到特定特徵層級和紋理維度支援的最大維度之間。 不過,GPU 虛擬位址空間耗盡、記憶體落地預算 (請參閱 IDXGIAdapter3::QueryVideoMemoryInfo) ,或系統記憶體可能很容易先發生。 針對壓縮格式,這些維度是邏輯的。 例如:

  • 針對TEXTURE1D:
    • 寬度 必須小於或等於功能層級小於 11_0 且功能層級 11_0 或更新版本D3D11_REQ_TEXTURE1D_U_DIMENSION D3D10_REQ_TEXTURE1D_U_DIMENSION。
    • 高度 必須是 1。
    • DepthOrArraySize 會解譯為數位大小,而且在功能層級 11_0 或更新版本上必須小於或等於D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION,且功能層級 11_0 或更新版本D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION。
  • 針對TEXTURE2D:
    • 寬度高度 必須小於或等於小於 11_0 的功能層級和D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION或功能層級 11_0 或更新版本D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION。
    • DepthOrArraySize 會解譯為數位大小,而且在功能層級 11_0 或更新版本上必須小於或等於D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION,且功能層級 11_0 或更新版本D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION。
  • 針對TEXTURE3D:
    • WidthHeightDepthOrArraySize 在小於 11_0 的功能層級上必須小於或等於D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION,且功能層級 11_0 或更新版本D3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSION。
    • DepthOrArraySize 會解譯為深度。
下列注意事項適用於所有紋理大小。

對準

對齊 方式可以是 0、4KB、64KB 或 4MB 的其中一個。

如果 Alignment 設定為0,運行時間會針對MSAA紋理使用4 MB,而其他所有專案則使用64KB。 當紋理很小時,應用程式可能會為幾個紋理類型選擇比這些預設值較小的對齊方式。 如果紋理符合以下) 詳述的小型限制,可以使用 64KB 對齊方式建立 (。

沒有 MSAA 且沒有轉譯目標或深度樣板旗標的紋理,可能會再次使用 4KB 對齊 (建立,並傳遞小型大小限制) 。

當最詳細 Mip 層級的估計大小是較大對齊限制或更少時,應用程式可以建立較小的對齊資源。 運行時間會使用與大小估計無關的架構機制,以模擬標準wizzle 和 D3D12 並排資源的大小。 不過,磚大小會是這類計算的較小對齊限制。 使用非轉譯目標和非深度樣板紋理作為範例,運行時間會假設接近相等的磚圖形為 4KB,並計算最詳細 mip 層級所需的磚數目。 如果磚數目等於或小於 16,則應用程式可以建立 4KB 對齊的資源。 因此,只要寬度和高度足以滿足特定格式和 MSAA 的大小,任何數位大小的 tex2d 陣列和任意數目的 mip 層級都可以是 4KB。

MipLevels

MipLevels 可以是 0 或 1 到 WidthHeightDepthOrArraySize 維度所支援的最大 Mip 層級。 使用 0 時,API 會自動計算支援的 Mip 層級上限,並使用該層級。 但是,某些資源和堆積屬性會排除 mip 層級,因此應用程式必須將值指定為 1。

如需每個格式的限制 ,請參閱D3D12_FORMAT_SUPPORT1 D3D12_FORMAT_SUPPORT1_MIP 欄位。 MSAA 資源、具有D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER的紋理,以及D3D12_HEAP_FLAG_ALLOW_DISPLAY所有排除 mip 層級的堆積。

格式

格式 必須是裝置功能層級支援的有效格式。

SampleDesc

只有在設定D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET或D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL時,TEXTURE2D才支援大於 1 和/或非零品質SampleDesc.Count

不支援下列項目:

  • D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,
  • D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS,
  • D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS,
  • D3D12_HEAP_FLAG_ALLOW_DISPLAY
如需判斷有效的計數品質,請參閱D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS

規格需求

需求
標頭 d3d12.h

另請參閱

CD3DX12_RESOURCE_DESC

核心結構

D3D12_HEAP_FLAGS