функция обратного вызова PFND3DDDI_QUERYRESOURCERESIDENCY (d3dumddi.h)
Функция QueryResourceResidency определяет место расположения заданного списка ресурсов.
Синтаксис
PFND3DDDI_QUERYRESOURCERESIDENCY Pfnd3dddiQueryresourceresidency;
HRESULT Pfnd3dddiQueryresourceresidency(
HANDLE hDevice,
const D3DDDIARG_QUERYRESOURCERESIDENCY *unnamedParam2
)
{...}
Параметры
hDevice
Дескриптор устройства отображения (графический контекст).
unnamedParam2
pData [in]
Указатель на структуру D3DDDIARG_QUERYRESOURCERESIDENCY , описывающую список ресурсов, для которых проверяется место проживания.
Возвращаемое значение
QueryResourceResidency возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
S_OK | Все ресурсы находятся в доступной для GPU памяти. |
S_RESIDENT_IN_SHARED_MEMORY | На диске нет выделений, составляющих ресурсы. Тем не менее, по крайней мере одно выделение не находится в доступной памяти GPU. |
S_NOT_RESIDENT | По крайней мере одно выделение ресурсов находится на диске. |
E_INVALIDARG | Параметры были проверены и определены как неверные. |
E_OUTOFMEMORY | QueryResourceResidency не удалось выделить память, необходимую для ее завершения. |
Комментарии
Среда выполнения Microsoft Direct3D вызывает функцию QueryResourceResidency драйвера отображения пользовательского режима для приложений, чтобы определить, приведет ли операционная система к значительному застою во время рисования, если система должна сделать ресурсы доступными для GPU. Сведения, возвращаемые из QueryResourceResidency , являются аппроксимацией расположения ресурсов, так как ресурсы могут быть понижены до того, как приложения используют ресурсы.
Функция QueryResourceResidency драйвера отображения пользовательского режима должна выполнять вызовы функции pfnQueryResidencyCb . Функция pfnQueryResidencyCb возвращает состояние расположения ресурса в элементах массива, который задается членом pResidencyStatusструктуры D3DDDICB_QUERYRESIDENCY . Если pfnQueryResidencyCb возвращает D3DDDI_RESIDENCYSTATUS_NOTRESIDENT для любого запроса, QueryResourceResidency должен возвращать S_NOT_RESIDENT. Если pfnQueryResidencyCb возвращает D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY для любого запроса и не возвращает D3DDDI_RESIDENCYSTATUS_NOTRESIDENT для любого запроса, QueryResourceResidency должен возвращать S_RESIDENT_IN_SHARED_MEMORY. QueryResourceResidency должен возвращать S_OK только в том случае, если все вызовы pfnQueryResidencyCb для всех запросов возвращают D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY.
Для каждого ресурса, запрашиваемого средой выполнения посредством вызова QueryResourceResidency, драйвер отображения пользовательского режима должен определить, какие выделения, принадлежащие ресурсу, будут запрашиваться с помощью вызова pfnQueryResidencyCb. Для ресурса, которому принадлежит одно выделение, определение является простым — драйвер будет запрашивать это выделение. Однако если ресурс владеет несколькими выделениями, определение будет сложнее. Драйвер должен определить, какие выделения приложение, скорее всего, будет использовать для отрисовки, а драйвер должен запрашивать только эти выделения. Например, если ресурсу принадлежит выделение, используемое для отрисовки, и временное выделение, которое обрабатывает операцию блокировки, драйвер должен запрашивать только место расположения первого выделения, так как приложение, скорее всего, не будет использовать второе выделение для отрисовки.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | d3dumddi.h (включая D3dumddi.h) |