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
對於 E_INVALIDARGE_OUTOFMEMORY,現有的圖格集區會維持不變,其中包含現有的對應。

備註

ResizeTilePool 會根據應用程式是否需要對應至該集區的磚資源,增加或減少磚集區的大小。 應用程式可以為新的磚資源配置額外的磚集區,但如果有任何單一磚資源需要超過其磚集區一開始可用的空間,應用程式可以增加資源磚集區的大小。 磚化資源無法同時對應到多個磚集區。

當您增加磚集區的大小時,會透過驅動程式的一或多個新配置,將其他磚新增至磚集區的結尾;您的應用程式無法偵測到新配置中的明細。 磚集區中的現有記憶體會維持不變,而現有磚資源對應會保持不變。

當您減少磚集區的大小時,磚會從結尾移除, (即使初始配置大小低於,仍允許此設定大小低於0) 。 這表示新對應無法超過新的大小。 不過,超過新大小的現有對應會維持不變,而且依然可以使用。 只要對應至用於磚集區內存的任何部分配置,記憶體就會保持作用中。 如果減少之後,某些記憶體會保持作用中,因為磚對應指向該記憶體,而且磚集區會再次增加 (,) 的任何數量再次增加,則會先重複使用現有的記憶體,然後再進行任何其他配置以服務增加的大小。

為了能夠節省記憶體,應用程式不僅必須減少磚集區,也必須移除並重新對應超過新較小磚集區大小結尾的現有對應。

減少 (和移除對應) 不一定會產生立即的記憶體節省。 釋放記憶體取決於驅動程序針對磚集區的基礎配置有多細微。 當磚集區的大小減少足以讓驅動程式配置未使用時,驅動程式可以釋放配置。 如果磚集區已增加,而且您接著會減少到先前的大小, (並移除並重新對應磚對應) ,您很可能會產生記憶體節省。 但是,在大小與驅動程式所選擇的基礎配置大小不完全一致的情況下,並不保證此案例。

如需磚資源的詳細資訊,請參閱 磚資源

規格需求

需求
最低支援的用戶端 Windows 8.1 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2012 R2 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d3d11_2.h
程式庫 D3D11.lib

另請參閱

ID3D11DeviceContext2