Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
DXGKCB_CREATECONTEXTALLOCATION выделяет контекст GPU или контекст для конкретного устройства.
Синтаксис
DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;
NTSTATUS DxgkcbCreatecontextallocation(
[in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}
Параметры
[in/out] unnamedParam1
Указатель на структуру DXGKARGCB_CREATECONTEXTALLOCATION, указывающую атрибуты контекста, который нужно выделить.
Возвращаемое значение
DXGKCB_CREATECONTEXTALLOCATION возвращает STATUS_SUCCESS, если он успешно выполнен. В противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.
Замечания
Начиная с версии WDDM 1.2, драйверы минипорта могут выделять контекст для gpu (выделение контекста GPU) или контекст для конкретного устройства (выделение контекста устройства).
Выделение контекста GPU позволяет графическим процессорам хранить состояние контекста из буферов DMA, которые преумножены в середине выполнения. Драйверы создают выделения, связанные с контекстом GPU, чтобы сохранить его состояние при необходимости. Операционная система гарантирует, что выделение контекста находится в резидентном режиме, прежде чем команда из этого контекста помещается в очередь аппаратного выполнения GPU. Контекст останется резидентным, пока команда из другого контекста не будет помещена в очередь выполнения оборудования.
Кроме того, операционная система поддерживает отложенное переключение контекста GPU, предполагая, что состояние контекста оборудования сохраняется на GPU после выполнения команды, принадлежащую контексту. Таким образом контексты переключаются только на GPU, когда команда из другого контекста отправляется в очередь оборудования.
DXGKCB_XXX функции реализуются Dxgkrnl. Чтобы использовать эту функцию обратного вызова, задайте элементы DXGKARGCB_ALLOCATEPAGESFORMDL и вызовите DxgkCbCreateContextAllocation через DXGKRNL_INTERFACE.
Выделение контекста GPU
Выделение контекста GPU может выполняться только для несистемных контекстов. Драйвер мини-порта отображения создает эти контексты путем вызова DxgkDdiCreateContext. Чтобы создать несистемный контекст, драйвер задает SystemContext член структуры DXGK_CREATECONTEXTFLAGS нулю и передает указатель на эту структуру в параметре pCreateContext.
Выделение контекста устройства следует аналогичной модели, за исключением того, что она останется резидентной для любого контекста, который принадлежит устройству, с которым он связан. Эта модель позволяет драйверам использовать выделения контекста GPU для хранения данных области сохранения контекста GPU (CSA) и использовать выделения контекста устройства для хранения данных таблицы страниц.
Выделение контекста устройства
Выделение контекста устройства можно сделать только для несистемных устройств. Драйвер мини-порта отображения создает эти устройства, вызывая DxgkDdiCreateDevice. Чтобы создать устройство, отличное от системы, драйвер задает элемент Flags.SystemDevice структуры DXGK_CREATEDEVICEFLAGS нулю и передает указатель на эту структуру в параметре pCreateDevice.
Драйвер мини-порта отображения вызывает DXGKCB_DESTROYCONTEXTALLOCATION для освобождения ресурсов контекста, выделенных через DxgkCbCreateContextAllocation.
Виртуальные адреса для выделения контекста назначения
Чтобы убедиться, что операционная система задает допустимый виртуальный адрес (non-NULL) для выделения контекста назначения (InitContextResource->Destination->VirtualAddress член структуры DXGKARG_BUILDPAGINGBUFFER), когда драйвер мини-порта отображения вызывает DxgkCbCreateContextAllocation он должен:
- Задайте CpuVisible и защищенных членов структуры DXGK_ALLOCATIONINFOFLAGS.
- Страница в выделении только для сегментов диафрагмы, задав SupportedSegmentSet член структуры DXGKARGCB_CREATECONTEXTALLOCATION.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows 8 (WDDM 1.2) |
| минимальный поддерживаемый сервер | Windows Server 2012 |
| целевая платформа | Настольный |
| заголовка | d3dkmddi.h (include D3dkmddi.h) |
| IRQL | PASSIVE_LEVEL |
См. также
DXGKARGCB_CREATECONTEXTALLOCATION