> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GetResourceAllocationInfo

> GetResourceAllocationInfo (XBOX 上的 Direct3D 12) — 取得此介面卡上一組資源所需記憶體的大小和對齊。

取得此介面卡上一組資源所需記憶體的大小和對齊。

## 語法

```cpp theme={null}
D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
    UINT visibleMask,
    UINT numResourceDescs,
    const D3D12_RESOURCE_DESC* pResourceDescs
)
```

### 參數

*visibleMask \[in]*\
類型：UINT

若為單一 GPU 作業，請將此設為零。如果有多個 GPU 節點，請設定位元以識別節點 (裝置的實體介面卡)。遮罩中的每個位元都對應至單一節點。另請參閱[多介面卡系統](https://learn.microsoft.com/en-us/windows/win32/direct3d12/multi-engine)。

*numResourceDescs \[in]*\
類型：**[UINT](https://learn.microsoft.com/en-us/windows/win32/WinProg/windows-data-types)**

*pResourceDescs* 陣列中的資源描述元數目。

*pResourceDescs \[in]*\
類型：**const [D3D12\_RESOURCE\_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_resource_desc_public)\***

描述要取得其資訊之資源的 **D3D12\_RESOURCE\_DESC** 結構陣列。

### 傳回值

類型：D3D12\_RESOURCE\_ALLOCATION\_INFO

[D3D12\_RESOURCE\_ALLOCATION\_INFO](/zh-TW/reference/graphics/d3d12/structs/d3d12_resource_allocation_info_public) 結構，提供為指定資源陣列所配置之視訊記憶體的相關資訊。

如果發生錯誤，則 **D3D12\_RESOURCE\_ALLOCATION\_INFO::SizeInBytes** 等於 **UINT64\_MAX**。

## 備註

當您使用 [CreatePlacedResource](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public) 時，您的應用程式必須使用 **GetResourceAllocationInfo** 來了解紋理資源的大小和對齊特性。此方法的結果會因特定介面卡而異，且必須視為此介面卡和驅動程式版本所特有。

您的應用程式無法使用 **GetResourceAllocationInfo** 的輸出來了解紋理的封裝 mip 屬性。若要了解紋理的封裝 mip 屬性，您的應用程式必須使用 [GetResourceTiling](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_getresourcetiling_public)。

紋理資源大小與 **GetResourceTiling** 傳回的資訊有顯著差異，因為某些介面卡架構會為紋理配置額外的記憶體，以降低常見轉譯情境中的有效頻寬。這甚至包括紋理配置有限制或具有標準化紋理配置的紋理。應用程式無法使用 [CreateReservedResource](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createreservedresource_public) 和 [UpdateTileMappings](/zh-TW/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_updatetilemappings_public) 對該額外記憶體進行稀疏對應或重新對應，因此 **GetResourceTiling** 不會回報該記憶體。

您的應用程式可以不對緩衝區資源 ([D3D12\_RESOURCE\_DIMENSION\_BUFFER](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_dimension)) 使用 **GetResourceAllocationInfo**。緩衝區在所有介面卡上都有相同的大小，也就是大於或等於 [D3D12\_RESOURCE\_DESC::Width](/zh-TW/reference/graphics/d3d12/structs/d3d12_resource_desc_public) 的最小 64KB 倍數。

傳入多個資源描述時，會使用計算結構大小和對齊的 C++ 演算法。例如，包含兩個 64KB 對齊的極小資源和一個 4MB 對齊的極小資源的三元素陣列，會根據陣列的順序回報不同的大小。如果 4MB 對齊的資源位於中間，則產生的 **Size** 為 12MB。否則，產生的 **Size** 為 8MB。傳回的 **Alignment** 一律為 4MB，因為它是資源陣列中所有對齊的超集。

## 需求

**標頭：** d3d12\_xs.h 或 d3d12\_x.h\
**程式庫：** d3d12\_xs.lib 或 d3d12\_x.lib\
**支援的平台：** XBOX Series 主機和 XBOX One 系列主機

## 另請參閱

[ID3D12Device](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [GetResourceAllocationInfo1 (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_getresourceallocationinfo1_public.md)
- [D3D12_RESOURCE_ALLOCATION_INFO](/zh-TW/reference/graphics/d3d12/structs/d3d12_resource_allocation_info_public.md)
- [GetResourceTiling](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_getresourcetiling_public.md)
- [CreatePlacedResource](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public.md)
- [CreatePlacedResource2 (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createplacedresource2_public.md)
