ID3D11DeviceContext2::ResizeTilePool 方法 (d3d11_2.h)
調整磚集區的大小。
語法
HRESULT ResizeTilePool(
[in] ID3D11Buffer *pTilePool,
[in] UINT64 NewSizeInBytes
);
參數
[in] pTilePool
類型: ID3D11Buffer*
要調整磚集區的 ID3D11Buffer 指標。
[in] NewSizeInBytes
類型: UINT64
磚集區位元組的新大小。 大小必須是 64 KB 或 0 的倍數。
傳回值
類型: HRESULT
如果成功,則傳回S_OK;否則,傳回下列其中一項:
- 如果新的磚集區大小不是 64 KB 或 0 的倍數,則傳回 E_INVALIDARG 。
- 如果呼叫導致驅動程式必須為新的分頁表對應配置空間,但記憶體不足,則傳回 E_OUTOFMEMORY 。
- 如果已從系統實際移除視訊卡,或發生視訊卡的驅動程序升級,則傳回 DXGI_ERROR_DEVICE_REMOVED 。
備註
ResizeTilePool 會根據應用程式是否需要對應至該集區的磚資源,增加或減少磚集區的大小。 應用程式可以為新的磚資源配置額外的磚集區,但如果有任何單一磚資源需要超過其磚集區一開始可用的空間,應用程式可以增加資源磚集區的大小。 磚化資源無法同時對應到多個磚集區。
當您增加磚集區的大小時,會透過驅動程式的一或多個新配置,將其他磚新增至磚集區的結尾;您的應用程式無法偵測到新配置中的明細。 磚集區中的現有記憶體會維持不變,而現有磚資源對應會保持不變。
當您減少磚集區的大小時,磚會從結尾移除, (即使初始配置大小低於,仍允許此設定大小低於0) 。 這表示新對應無法超過新的大小。 不過,超過新大小的現有對應會維持不變,而且依然可以使用。 只要對應至用於磚集區內存的任何部分配置,記憶體就會保持作用中。 如果減少之後,某些記憶體會保持作用中,因為磚對應指向該記憶體,而且磚集區會再次增加 (,) 的任何數量再次增加,則會先重複使用現有的記憶體,然後再進行任何其他配置以服務增加的大小。
為了能夠節省記憶體,應用程式不僅必須減少磚集區,也必須移除並重新對應超過新較小磚集區大小結尾的現有對應。
減少 (和移除對應) 不一定會產生立即的記憶體節省。 釋放記憶體取決於驅動程序針對磚集區的基礎配置有多細微。 當磚集區的大小減少足以讓驅動程式配置未使用時,驅動程式可以釋放配置。 如果磚集區已增加,而且您接著會減少到先前的大小, (並移除並重新對應磚對應) ,您很可能會產生記憶體節省。 但是,在大小與驅動程式所選擇的基礎配置大小不完全一致的情況下,並不保證此案例。
如需磚資源的詳細資訊,請參閱 磚資源。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8.1 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 R2 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | d3d11_2.h |
程式庫 | D3D11.lib |