DXGKCB_CREATECONTEXTALLOCATION 콜백 함수(d3dkmddi.h)

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 컨텍스트 할당을 사용하면 GPU가 실행 중간에 선점된 DMA 버퍼의 컨텍스트 상태를 저장할 수 있습니다. 드라이버는 GPU 컨텍스트와 연결된 할당을 만들어 필요할 때 상태를 저장합니다. 운영 체제는 이 컨텍스트의 명령이 GPU의 하드웨어 실행 큐에 배치되기 전에 컨텍스트 할당이 상주하도록 합니다. 컨텍스트는 다른 컨텍스트의 명령이 하드웨어 실행 큐에 배치될 때까지 상주합니다.

또한 운영 체제는 컨텍스트에 속하는 명령을 완료한 후 하드웨어 컨텍스트 상태가 GPU에 유지되는 것으로 가정하여 지연 GPU 컨텍스트 전환을 지원합니다. 이러한 방식으로 컨텍스트는 다른 컨텍스트의 명령이 하드웨어 큐에 제출될 때만 GPU에서 전환됩니다.

DXGKCB_XXX 함수는 Dxgkrnl에 의해 구현됩니다. 이 콜백 함수를 사용하려면 DXGKARGCB_ALLOCATEPAGESFORMDL 멤버를 설정한 다음 DXGKRNL_INTERFACE 통해 DxgkCbCreateContextAllocation을 호출합니다.

GPU 컨텍스트 할당

GPU 컨텍스트 할당은 비시스템 컨텍스트에 대해서만 수행할 수 있습니다. 디스플레이 미니포트 드라이버는 DxgkDdiCreateContext를 호출하여 이러한 컨텍스트를 만듭니다. 비시스템 컨텍스트를 만들기 위해 드라이버는 DXGK_CREATECONTEXTFLAGS 구조체의 SystemContext 멤버를 0으로 설정하고 pCreateContext 매개 변수에서 이 구조체에 대한 포인터를 전달합니다.

디바이스 컨텍스트 할당은 연결된 디바이스에 속하는 모든 컨텍스트에 대해 상주한다는 점을 제외하고 유사한 모델을 따릅니다. 이 모델을 사용하면 드라이버가 GPU 컨텍스트 할당을 사용하여 GPU CSA(컨텍스트 저장 영역) 데이터를 저장하고 디바이스 컨텍스트 할당을 사용하여 페이지 테이블 데이터를 저장할 수 있습니다.

디바이스 컨텍스트 할당

디바이스 컨텍스트 할당은 비시스템 디바이스에 대해서만 수행할 수 있습니다. 디스플레이 미니포트 드라이버는 DxgkDdiCreateDevice를 호출하여 이러한 디바이스를 만듭니다. 비시스템 디바이스를 만들기 위해 드라이버는 DXGK_CREATEDEVICEFLAGS 구조체의 Flags.SystemDevice 멤버를 0으로 설정하고 pCreateDevice 매개 변수에서 이 구조체에 대한 포인터를 전달합니다.

디스플레이 미니포트 드라이버는 DXGKCB_DESTROYCONTEXTALLOCATION 호출하여 DxgkCbCreateContextAllocation을 통해 할당된 컨텍스트 리소스를 해제합니다.

대상 컨텍스트 할당에 대한 가상 주소

디스플레이 미니포트 드라이버가 DxgkCbCreateContextAllocation을 호출할 때 운영 체제가 대상 컨텍스트 할당(DXGKARG_BUILDPAGINGBUFFER 구조의 InitContextResource-Destination-VirtualAddress>> 멤버)에 대해 유효한(NULL이 아닌) 가상 주소를 설정하도록 하려면 다음을 수행해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8(WDDM 1.2)
지원되는 최소 서버 Windows Server 2012
대상 플랫폼 데스크톱
머리글 d3dkmddi.h(D3dkmddi.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE