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 함수는 D3DDDICB_QUERYRESIDENCY 구조체의 pResidencyStatus 멤버로 지정된 배열 요소에 있는 리소스의 상주 상태 반환합니다. pfnQueryResidencyCb가 쿼리에 대한 D3DDDI_RESIDENCYSTATUS_NOTRESIDENT 반환하는 경우 QueryResourceResidency는 S_NOT_RESIDENT 반환해야 합니다. pfnQueryResidencyCb가 쿼리에 대한 D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY 반환하고 쿼리에 대한 D3DDDI_RESIDENCYSTATUS_NOTRESIDENT 반환하지 않는 경우 QueryResourceResidency는 S_RESIDENT_IN_SHARED_MEMORY 반환해야 합니다. QueryResourceResidency 는 모든 쿼리에 대한 pfnQueryResidencyCb 에 대한 모든 호출이 D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY 반환하는 경우에만 S_OK 반환해야 합니다.

런타임이 QueryResourceResidency 호출을 통해 쿼리하는 각 리소스에 대해 사용자 모드 표시 드라이버는 pfnQueryResidencyCb 호출을 통해 쿼리할 리소스에 속하는 할당을 결정해야 합니다. 단일 할당을 소유하는 리소스의 경우 결정은 간단합니다. 드라이버는 해당 할당을 쿼리합니다. 그러나 리소스가 여러 할당을 소유하는 경우 결정하기가 더 어렵습니다. 드라이버는 애플리케이션이 렌더링에 사용할 할당을 결정해야 하며 드라이버는 해당 할당만 쿼리해야 합니다. 예를 들어 리소스가 렌더링에 사용되는 할당과 잠금 작업을 처리하는 스크래치 할당을 소유하는 경우 애플리케이션이 렌더링에 두 번째 할당을 사용하지 않을 가능성이 높기 때문에 드라이버는 첫 번째 할당의 상주에 대해서만 쿼리해야 합니다.

참고 런타임은 시스템 메모리 리소스의 상주 쿼리를 지원하지 않으므로 런타임은 항상 시스템 메모리 리소스의 상주 상태 대한 애플리케이션의 요청을 실패하고 이러한 시스템 메모리 리소스에 대한 사용자 모드 표시 드라이버의 QueryResourceResidency 함수를 호출하지 않습니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 d3dumddi.h(D3dumddi.h 포함)

추가 정보

D3DDDIARG_QUERYRESOURCERESIDENCY

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICEFUNCS

pfnQueryResidencyCb