PFND3DDDI_MAKERESIDENTCB función de devolución de llamada (d3dumddi.h)

pfnMakeResidentCb se usa para indicar al sistema operativo que agregue un recurso a la lista de residencia del dispositivo e incremente el recuento de referencias de residencia de residencia en esta asignación.

Sintaxis

PFND3DDDI_MAKERESIDENTCB Pfnd3dddiMakeresidentcb;

HRESULT Pfnd3dddiMakeresidentcb(
  HANDLE hDevice,
  D3DDDI_MAKERESIDENT *unnamedParam2
)
{...}

Parámetros

hDevice

Identificador del dispositivo de visualización.

unnamedParam2

pData [in, out]

Puntero a una estructura de D3DDDI_MAKERESIDENT que describe las páginas de memoria que se van a residente.

Valor devuelto

pfnMakeResidentCb devuelve uno de los siguientes valores:

código de retorno descripción
S_OK Todas las asignaciones se han realizado residentes en la GPU tras la salida de esta función y están listas para tener acceso inmediatamente.
E_PENDING Las asignaciones se han agregado a la lista de requisitos de residencia del dispositivo, pero aún tienen operaciones de paginación pendientes para completarse antes de que se pueda acceder correctamente. En este caso, el controlador del modo de usuario debe esperar a que el pagingFenceValue en el objeto de sincronización de barrera supervisado asociado con hPagingQueue se indique antes de enviar búferes de comandos que hagan referencia a asignaciones o un error de página de GPU.
E_OUTOFMEMORY El administrador de memoria de vídeo no puede hacer que todos los residentes de asignación solicitados. Cuando esto sucede, ninguna asignación en la lista proporcionada verá modificado su recuento de residencias. En otras palabras, se trata de una operación atómica en la que todas las asignaciones aumentan su recuento de residencias o ninguna de ellas. Además, NumBytesToTrim indica al controlador cuántos bytes se deben recortar de la lista de requisitos de residencia del dispositivo, llamando a pfnEvictCb, antes de intentar volver a realizar las asignaciones con errores residentes.
El presupuesto de memoria asociado a una aplicación puede cambiar de forma asincrónica con la aplicación en ejecución. Como consecuencia de esto, el recorte del número solicitado de bytes no garantizará que el siguiente intento de realizar el conjunto de asignaciones residente se realizará correctamente, ya que el presupuesto de memoria de la aplicación puede haber disminuido. Debido a esto, un controlador debe asegurarse de que intenta solicitar residencia en un bucle, recortar entre cada iteración, hasta que la solicitud se realice correctamente o el controlador haya recortado todo lo posible para avanzar en una sola operación y usar el recurso necesario en ese intento final. Si se produce un error en ese intento final, el dispositivo subyacente se pondrá en error y el controlador en modo de usuario debe anular la solicitud y volver a la aplicación. El kernel no permitirá ningún envío adicional a ninguno de los contextos que pertenecen a un dispositivo en error.
Para el controlador del modo de usuario de DirectX 12.0, pfnMakeResidentCb se comporta ligeramente de manera diferente porque ya no es responsable de recortar o paginar en asignaciones. Esto se hace para asegurarse de que el estado de todas las asignaciones después de devolver desde la llamada sigue siendo el mismo que antes de la llamada. Esto significa que si se devuelve E_OUTOFMEMORY de la función :
- Todas las asignaciones permanecen en su estado original.
- Las asignaciones no se hicieron residentes.
- Se debe omitir PagingFenceValue.
Si el controlador necesita realizar llamadas pfnMakeResidentCb en varios lotes para dar cabida a la traducción de recursos a asignación, el controlador debe deshacer las llamadas anteriores a pfnMakeResidentCb con llamadas equivalentes a pfnEvictCby propagar el código de error al entorno de ejecución.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10
servidor mínimo admitido Windows Server 2016
de la plataforma de destino de Escritorio
encabezado de d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDI_MAKERESIDENT

pfnEvictCb