Solicitud de cambiar el nombre de una asignación
El controlador de pantalla en modo de usuario debe solicitar que el administrador de memoria de vídeo cambie el nombre de una asignación asociada a una superficie cuando una aplicación indique que descarta el contenido de la superficie como parte de una solicitud para bloquear la superficie (por ejemplo, un búfer de vértices). El tiempo de ejecución de Microsoft Direct3D pasa la marca Descartar campo de bits para indicar que ya no requiere el contenido actual de la superficie. El controlador puede solicitar que el administrador de memoria de vídeo asigne una nueva asignación para controlar la solicitud de bloqueo si la asignación actual que contiene el contenido de la superficie está ocupada, en lugar de bloquear el subproceso de la aplicación hasta que la asignación actual esté inactiva.
El controlador de visualización en modo de usuario solicita que el administrador de memoria de vídeo cambie el nombre de una asignación cuando el controlador establece el miembro Descartar de la estructura de D3DDDICB_LOCKFLAGS en una llamada a la función pfnLockCb . El administrador de memoria de vídeo determina si debe cambiar el nombre de la asignación o debe hacer que la aplicación se detenga hasta que la asignación esté inactiva en función de si la asignación está ocupada actualmente y en la condición de memoria actual. Para cada asignación que se cambia de nombre, el administrador de memoria de vídeo mantiene una lista de asignaciones que se usan sucesivamente para bloquear las asignaciones. El administrador de memoria de vídeo recorre la lista cada vez que la aplicación descarta el contenido de una asignación. La longitud de la lista viene determinada por los requisitos de la aplicación y la presión de memoria. El administrador de memoria de vídeo intenta mantener la lista lo suficientemente larga como para evitar que el subproceso de la aplicación se detenga en una solicitud de bloqueo. Sin embargo, bajo presión de memoria, el administrador de memoria de vídeo puede recortar la lista para evitar causar presión adicional de memoria.
Para imponer un límite en la longitud de la lista de cambio de nombre de una asignación, el controlador establece el miembro MaximumRenamingListLength de la estructura DXGK_ALLOCATIONINFO cuando crea la asignación. Si el controlador establece MaximumRenamingListLength en un valor distinto de cero, el administrador de memoria de vídeo determina la longitud adecuada de la lista de cambio de nombre sin superar el límite impuesto por el controlador. Si el controlador establece MaximumRenamingListLength en 0, el administrador de memoria puede aumentar el tamaño de la lista de cambio de nombre a cualquier tamaño necesario para mejorar el rendimiento.
Tenga en cuenta que cuando el controlador de pantalla en modo de usuario establece el miembro Descartar de D3DDDICB_LOCKFLAGS, el administrador de memoria de vídeo no llama al controlador de miniporte de pantalla para asignar asignaciones adicionales para la asignación original. El administrador de memoria de vídeo crea todas las asignaciones adicionales mediante los parámetros de creación de la asignación original. Desde la perspectiva del controlador de minipuerto de pantalla, la misma asignación se pagina en en varias ubicaciones de segmento simultáneas potencialmente múltiples.