Skip to main content
Hace que los objetos sean residentes para el dispositivo.

Sintaxis

Parámetros

NumObjects
Tipo: UINT
El número de objetos de la matriz ppObjects que se harán residentes para el dispositivo. ppObjects [in]
Tipo: ID3D12Pageable *const *
Un puntero a un bloque de memoria que contiene una matriz de punteros de interfaz ID3D12Pageable de los objetos. Aunque la mayoría de los objetos de D3D12 heredan de ID3D12Pageable, los cambios de residencia solo se admiten en los siguientes objetos: montones de descriptores, montones, recursos confirmados y montones de consultas.

Valor devuelto

Tipo: HRESULT Este método devuelve uno de los códigos de retorno de Direct3D 12.

Comentarios

MakeResident carga desde el disco los datos asociados a un recurso y vuelve a asignar la memoria desde el grupo de memoria apropiado del recurso. Este método debe llamarse en el objeto que posee la memoria física. Use este método, y Evict, para administrar la memoria de vídeo de la GPU; tenga en cuenta que esto se hacía automáticamente en D3D11, pero ahora debe hacerlo la aplicación en D3D12. MakeResident y Evict pueden ayudar a las aplicaciones a administrar el presupuesto de residencia en muchos adaptadores. MakeResident pagina explícitamente los datos hacia dentro y, a continuación, impide la paginación de salida para que la GPU pueda acceder a los datos. Evict habilita la paginación de salida. Algunas arquitecturas de GPU no se benefician de la manipulación de la residencia, debido a la falta de suficiente espacio de direcciones virtuales de GPU. Use D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT e IDXGIAdapter3::QueryVideoMemoryInfo para reconocer cuándo el espacio máximo de direcciones virtuales de GPU por proceso es demasiado pequeño o aproximadamente del mismo tamaño que el presupuesto de residencia. Para esas arquitecturas, el presupuesto de residencia siempre estará limitado por la cantidad de espacio de direcciones virtuales de GPU. Evict no liberará ningún presupuesto de residencia en esos sistemas. Las aplicaciones deben controlar los errores de MakeResident, incluso si parece haber suficiente presupuesto de residencia disponible. La fragmentación de la memoria física y las peculiaridades de la arquitectura del adaptador pueden impedir el uso de intervalos contiguos grandes. Las aplicaciones deben liberar más presupuesto de residencia antes de volver a intentarlo. MakeResident cuenta las referencias, de modo que debe llamarse a Evict el mismo número de veces que a MakeResident antes de que Evict surta efecto. Los objetos que admiten residencia se hacen residentes durante la creación, por lo que una única llamada a Evict expulsará realmente el objeto. Las aplicaciones deben usar barreras para asegurarse de que la GPU no use objetos no residentes. MakeResident debe devolver antes de que la GPU ejecute una lista de comandos que haga referencia al objeto. Debe llamarse a Evict después de que la GPU termine de ejecutar una lista de comandos que haga referencia al objeto. Los objetos expulsados siguen consumiendo la misma dirección virtual de GPU y la misma cantidad de espacio de direcciones virtuales de GPU. Por lo tanto, los descriptores de recursos y otras referencias a direcciones virtuales de GPU no se invalidan después de Evict.

Requisitos

Encabezado: d3d12_xs.h o d3d12_x.h
Biblioteca: d3d12_xs.lib o d3d12_x.lib
Plataformas compatibles: consolas XBOX Series y familia XBOX One

Consulte también

ID3D12Device
Última modificación el 28 de agosto de 2026