DXGKDDI_CREATEMEMORYBASIS 콜백 함수(d3dkmddi.h)
KMD의 DxgkDdiCreateMemoryBasis 함수는 더티 비트 추적 중에 작동하는 할당을 나타내는 메모리 범위 컬렉션에 대한 핸들을 만듭니다.
구문
DXGKDDI_CREATEMEMORYBASIS DxgkddiCreatememorybasis;
HANDLE DxgkddiCreatememorybasis(
IN_CONST_HANDLE hAdapter,
IN_CONST_PDXGKARG_CREATEMEMORYBASIS pArgs
)
{...}
매개 변수
hAdapter
[in] 디스플레이 어댑터와 연결된 컨텍스트 블록에 대한 핸들입니다. KMD는 이전에 DxgiDdiAddDevice 함수의 MiniportDeviceContext 출력 매개 변수에서 Dxgkrnl에 이 핸들을 제공했습니다.
pArgs
[in] 생성되는 기초에 대한 정보를 포함하는 DXGKARG_CREATEMEMORYBASIS 구조체에 대한 포인터입니다.
반환 값
DxgkDdiCreateMemoryBasis 는 범위 컬렉션을 추적하기 위한 KMD 참조에 대한 HANDLE을 반환합니다. KMD는 DxgkDdiDestroyMemoryBasis와 같은 후속 명령에서 이 정보를 기본 정보로 변환할 수 있어야 합니다.
설명
VRAM에서 수정 작업의 추적은 연속적으로 지원되지 않을 수 있는 할당을 위한 것입니다. 따라서 더티 비트 추적에 표시되는 실제 주소는 작동 중인 할당을 나타내는 범위 컬렉션으로 구성됩니다. DxgkDdiCreateMemoryBasis 는 이러한 범위를 추적하기 위한 KMD 참조에 대한 핸들을 반환합니다.
KMD는 다음과 같은 고정을 사용할 수 있습니다.
범위의 각 범위에 대해 SegmentOffset 및 (SegmentOffset + SizeInBytes - 1)는 SegmentId에서 참조하는 세그먼트에서 유효한 주소를 나타냅니다.
모든 범위는 쌍으로 연결되지 않습니다. 즉, 두 범위 간의 교집합은 항상 null입니다.
또한 생성된 메모리 기반이 특정 더티 추적 DDI에서 사용될 때 SegmentOffset 및 SizeInBytes는 특정 페이지 맞춤을 존중하는 것이 일반적입니다. 이러한 값은 해당 DDI의 참조 페이지에 설명되어 있으며 항상 DXGK_DIRTY_BIT_TRACKING_SEGMENT_CAPS::P ageSize의 배수입니다.
그렇지 않으면 Dxgkrnl은 범위 컬렉션 또는 관련 보증에서 주소의 순서를 보장하지 않습니다.
자세한 내용은 더티 비트 추적을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 11 버전 24H2(WDDM 3.2) |
머리글 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |