Método IDXGIDevice3::Trim (dxgi1_3.h)
Recorta la memoria gráfica asignada por el dispositivo DXGIDevice3 IDXGI en nombre de la aplicación.
En el caso de las aplicaciones que se representan con DirectX, los controladores de gráficos asignan periódicamente búferes de memoria internos para acelerar las solicitudes de representación posteriores. Estas asignaciones de memoria cuentan con el uso de memoria de la aplicación para PLM y, en general, dan lugar a un mayor uso de memoria por parte del sistema general.
A partir de Windows 8.1, las aplicaciones que se representan con Direct2D o Direct3D (incluida la interoperabilidad CoreWindow y XAML) deben llamar a Trim en respuesta a la devolución de llamada de suspensión PLM. El tiempo de ejecución de Direct3D y el controlador de gráficos descartarán los búferes de memoria internos asignados para la aplicación, lo que reduce su superficie de memoria.
Llamar a este método no cambia el estado de representación del dispositivo gráfico y no tiene ningún efecto en las operaciones de representación. Hay un breve impacto en el rendimiento cuando se reasignan los búferes internos durante las primeras operaciones de representación después de la llamada a Trim , por lo que las aplicaciones solo deben llamar a Trim cuando van inactivos durante un período de tiempo (en respuesta a la suspensión PLM, por ejemplo).
Las aplicaciones deben asegurarse de que llaman a Trim como una de las últimas operaciones D3D realizadas antes de estar inactivas. Direct3D normalmente aplazará la destrucción de objetos D3D. Sin embargo, llamar a Trim obliga a Direct3D a destruir objetos inmediatamente. Por este motivo, no se garantiza que liberar la referencia final en objetos Direct3D después de llamar a Trim hará que el objeto se destruya y se desasigne la memoria antes de que se suspenda la aplicación.
De forma similar a ID3D11DeviceContext::Flush, las aplicaciones deben llamar a ID3D11DeviceContext::ClearState antes de llamar a Trim. ClearState borra los enlaces de canalización de Direct3D, lo que garantiza que Direct3D no contiene ninguna referencia a los objetos de Direct3D que está intentando liberar.
También es prudente liberar referencias en middleware antes de llamar a Trim, ya que es posible que ese middleware también necesite liberar referencias a objetos Direct3D.
Sintaxis
void Trim();
Valor devuelto
None
Requisitos
Cliente mínimo compatible | Windows 8.1 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2012 R2 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | dxgi1_3.h |
Library | Dxgi.lib |