функция обратного вызова DXGKDDI_SUSPENDCONTEXT (d3dkmddi.h)
DxgkddiSuspendContext указывает GPU приостановить контекст. Если GPU не подтверждает завершение приостановки в течение времени ожидания TDR (обнаружение и восстановление времени ожидания), ОС обнаружит время ожидания подсистемы и выполнит сброс подсистемы.
Синтаксис
DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;
NTSTATUS DxgkddiSuspendcontext(
IN_CONST_HANDLE hAdapter,
IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}
Параметры
hAdapter
[in] Аппаратный контекст, который необходимо вытеснять и помечать как приостановленный. Этот тип запроса на вытеснение не имеет льготного периода и, как ожидается, будет выполнен GPU как можно скорее.
pSuspendContext
[in] Указатель на структуру DXGKARG_SUSPENDCONTEXT , содержащую дополнительные аргументы для этой функции.
Возвращаемое значение
DxgkddiSuspendContext возвращает STATUS_SUCCESS, если контекст уже приостановлен во время этого вызова. В противном случае этому значению присваивается значение STATUS_PENDING, и операция приостановки будет завершена при сигнале contextSuspendFence через прерывание.
Комментарии
Зарегистрируйте реализацию этой функции обратного вызова, задав ее в DRIVER_INITIALIZATION_DATA.
Несмотря на то, что вытеснение с циклическим перебором может быть инициировано GPU, операционной системе по-прежнему нужен способ вытеснять контекст по другим причинам; например, если ему нужно переместить свои выделения или выполнить переход на питание GPU.
Значение приостановки контекста необходимо для обработки случаев, когда ОС приостанавливает контекст, не ожидает подтверждения приостановки, возобновляет и снова приостанавливает контекст. Значение приостановки позволит ОС различать предыдущее и последнее подтверждение приостановки.
После приостановки контекста предполагается, что все ссылки на него удаляются из GPU, и ОС может уничтожить контекст или переместить его память. В отличие от WDDM 2.3 или более ранних версий, в режиме планирования WDDM 2.4 отсутствует отдельная команда переключения контекста NULL (ранее обозначенная флагом ContextSwitch в DxgkDdiSuspendContext).
Требования
Требование | Значение |
---|---|
Заголовок | d3dkmddi.h |