다음을 통해 공유


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에서 사용될 때 SegmentOffsetSizeInBytes는 특정 페이지 맞춤을 존중하는 것이 일반적입니다. 이러한 값은 해당 DDI의 참조 페이지에 설명되어 있으며 항상 DXGK_DIRTY_BIT_TRACKING_SEGMENT_CAPS::P ageSize의 배수입니다.

그렇지 않으면 Dxgkrnl범위 컬렉션 또는 관련 보증에서 주소의 순서를 보장하지 않습니다.

자세한 내용은 더티 비트 추적을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 11 버전 24H2(WDDM 3.2)
머리글 d3dkmddi.h
IRQL PASSIVE_LEVEL

추가 정보

DXGKARG_CREATEMEMORYBASIS

DxgkDdiDestroyMemoryBasis