функция обратного вызова DXGKDDI_SUSPENDCONTEXT (d3dkmddi.h)

Указать GPU, чтобы он приостановил контекст. Если GPU не подтверждает завершение приостановки в течение времени ожидания TDR (время ожидания обнаружения и восстановления), ОС обнаружит время ожидания подсистемы и выполнит сброс.

Синтаксис

DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;

NTSTATUS DxgkddiSuspendcontext(
  IN_CONST_HANDLE hAdapter,
  IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}

Параметры

hAdapter

Контекст оборудования, который будет вытеснен и помечен как приостановленный. Этот тип запроса на вытеснение не имеет льготного периода и, как ожидается, будет выполнен GPU как можно скорее.

pSuspendContext

Указатель на структуру DXGKARG_SUSPENDCONTEXT , которая содержит монотонно увеличивающееся значение для каждого контекста, которое будет сообщаться прерыванием приостановки контекста GPU после завершения запроса вытеснения. До тех пор, пока не будет поймечено ограждение, ОС не может предполагать, что GPU приостановлен.

Возвращаемое значение

Верните STATUS_SUCCESS, если контекст уже приостановлен во время этого вызова. В противном случае этому значению присваивается значение STATUS_PENDING, и операция приостановки будет завершена при сигнале contextSuspendFence через прерывание.

Комментарии

Зарегистрируйте реализацию этой функции обратного вызова, задав соответствующий член DXGKARG_SUSPENDCONTEXT и вызвав DxgkddiSuspendContext.

Несмотря на то, что вытеснение с циклическим перебором может быть инициировано GPU, ОПЕРАЦИОННОй системе по-прежнему требуется способ вытеснять контекст по другим причинам, например, если ей нужно переместить свои выделения вокруг или выполнить переход на питание GPU.

Значение приостановки контекста необходимо для обработки случаев, когда ОС приостанавливает контекст, не ожидает подтверждения приостановки, возобновляет и снова приостанавливает контекст. Значение приостановки позволит ОС различать предыдущее и последнее подтверждение приостановки.

После приостановки контекста предполагается, что все ссылки на него удаляются из GPU, и ОС может уничтожить контекст или переместить его память. В отличие от WDDM 2.3 или более ранней версии, в режиме планирования WDDM 2.4 не существует отдельной команды переключения контекста NULL (ранее указывалось флагом ContextSwitch в DdiSubmitCommandVirtual), так как предполагается, что эта работа выполняется с помощью DdiSuspendContext.

Требования

Требование Значение
Заголовок d3dkmddi.h