Поделиться через


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

Функция pfnSetPriorityCb задает уровень приоритета ресурса или списка выделений.

Синтаксис

PFND3DDDI_SETPRIORITYCB Pfnd3dddiSetprioritycb;

HRESULT Pfnd3dddiSetprioritycb(
  HANDLE hDevice,
  D3DDDICB_SETPRIORITY *unnamedParam2
)
{...}

Параметры

hDevice

Дескриптор устройства отображения (графический контекст).

unnamedParam2

pData [in]

Указатель на структуру D3DDDICB_SETPRIORITY , описывающую уровень приоритета для задания ресурса или списка выделений.

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

pfnSetPriorityCb возвращает одно из следующих значений:

Код возврата Описание
S_OK Уровень приоритета успешно задан.
E_INVALIDARG Параметры были проверены и определены как неверные.

Эта функция также может возвращать другие значения HRESULT.

Комментарии

Драйвер отображения пользовательского режима может вызвать функцию pfnSetPriorityCb , чтобы задать приоритет базового ресурса или списка выделений. Если задан уровень приоритета ресурса, для всех выделений, относящихся к ресурсу, устанавливается указанный уровень приоритета. Как правило, драйвер отображения пользовательского режима задает приоритет ресурса или списка выделений после того, как среда выполнения Microsoft Direct3D вызывает функцию SetPriority или SetResourcePriorityDXGI драйвера отображения пользовательского режима, чтобы задать приоритет вытеснения из памяти для ресурса. Однако драйвер отображения пользовательского режима может задать приоритет выделения в любое время.

После того как приложение запросит установить уровень приоритета поверхности, драйвер отображения пользовательского режима должен задать для соответствующего ресурса или списка выделений уровень приоритета, заданный приложением.

Примечание Уровни приоритета являются лишь подсказкой для диспетчера видеопамяти; Диспетчер памяти может игнорировать их при различных условиях.
 
Приоритет выделения определяет как вероятность того, что выделение останется постоянным, так и вероятность того, насколько сильно диспетчер видеопамяти будет пытаться уважать предпочтения драйвера для размещения выделения. В файле заголовка D3dukmdt.h определены следующие уровни приоритета:

Драйвер может использовать уровни приоритета, отличные от предыдущих определенных значений, если это необходимо. Например, пометка выделения с уровнем приоритета 0x78000001 указывает, что выделение немного выше нормы.

Примеры

В следующем примере кода показано, как задать уровень приоритета.

HRESULT CD3DContext::SetPriority(CONST D3DDDIARG_SETPRIORITY* pSetPriority) {
    DWORD  dwSurfaceHandle = (DWORD)(DWORD_PTR)pSetPriority->hResource;
    CResource   &res = m_RTbl[dwSurfaceHandle];
    D3DDDICB_SETPRIORITY    setPri;
    UINT                    priority;

    priority = pSetPriority->Priority;

    memset(&setPri, 0, sizeof(setPri));

    setPri.hResource   = res.m_hResRuntime;
    setPri.pPriorities = &priority;

    return (m_d3dCallbacks.pfnSetPriorityCb(m_hD3D, &setPri));
}

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть d3dumddi.h (включая D3dumddi.h)

См. также раздел

D3DDDICB_SETPRIORITY

D3DDDI_DEVICECALLBACKS

DxgkCbCreateContextAllocation

SetPriority

SetResourcePriorityDXGI