다음을 통해 공유


DXGK_SEGMENTDESCRIPTOR3 구조체(d3dkmddi.h)

DXGK_SEGMENTDESCRIPTOR3 구조에는 BIOS 예약 메모리(저전력 상태로 전환하는 동안 제거됨) 및 드라이버 예약 메모리로 구성된 드라이버 지원 세그먼트에 대한 정보가 포함되어 있습니다.

구문

typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
  [out] DXGK_SEGMENTFLAGS Flags;
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
        SIZE_T            SystemMemoryEndAddress;
        SIZE_T            Reserved;
} DXGK_SEGMENTDESCRIPTOR3;

멤버

[out] Flags

세그먼트의 속성을 비트 필드 플래그로 식별하는 DXGK_SEGMENTFLAGS 구조체입니다.

AGP 형식 조리개 세그먼트의 경우 드라이버는 DXGK_SEGMENTFLAGS 포함된 공용 구조체에서 구조체의 Agp 멤버만 설정해야 합니다. AGP 형식 조리개 세그먼트는 조리개이며 CPU에 액세스할 수 있지만 다른 멤버가 설정된 경우 어댑터가 초기화되지 않습니다.

[out] BaseAddress

GPU(그래픽 처리 장치)에 의해 결정되는 세그먼트의 기본 주소입니다. 세그먼트에서 페이징된 비디오 메모리 관리자가 할당하는 실제 주소에는 BaseAddress 가 지정하는 기본 주소에서 오프셋되는 GPU 주소가 할당됩니다.

비디오 메모리 관리자는 AGP 형식 조리개 세그먼트의 기본 주소( Agp 비트 필드 플래그가 Flags 멤버에 지정됨)를 무시하고 대신 GPU가 있는 버스에서 결정된 대로 AGP 조리개 내 세그먼트의 실제 실제 주소를 사용합니다. 이 경우 드라이버는 번역 없이 비디오 메모리 관리자가 직접 할당을 위해 생성한 주소를 사용할 수 있습니다.

[out] CpuTranslatedAddress

GPU가 연결된 버스를 기준으로 세그먼트의 기본 주소입니다. 예를 들어 GPU가 PCI 버스에 연결된 경우 CpuTranslatedAddress 는 PCI BAR(기본 주소 레지스터)로 지정된 사용 가능한 범위의 기본 주소입니다. 드라이버는 Flags 멤버에서 CpuVisible 비트 필드 플래그를 설정하여 CPU 액세스 가능 세그먼트를 지정하는 경우에만 이 주소를 지정 합니다 .

이 멤버는 AGP 형식 조리개 세그먼트를 포함하여 조리개 세그먼트에 대해 무시됩니다. 유일한 예외는 사용자 모드 표시 드라이버가 기본 할당에 대한 대체 가상 주소를 설정하지 않은 경우에 발생합니다(즉, 드라이버가 pfnLockCb 함수를 호출하는 동안 D3DDDICB_LOCKFLAGS 구조의 Flags 멤버에서 UseAlternateVA를 설정하지 않은 경우).

비디오 메모리 관리자가 가상 주소를 실제 범위에 매핑하기 전에 비디오 메모리 관리자는 버스의 CPU 보기에 따라 이 실제 주소를 변환하고 드라이버가 지정된 위치에 있는 세그먼트의 콘텐츠에 액세스하도록 조리개를 설정할 수 있도록 작업에 대해 드라이버에 알릴 수 있습니다.

[out] Size

세그먼트의 크기(바이트)입니다. 이 크기는 네이티브 호스트 페이지 크기의 배수여야 합니다(예: x86 아키텍처의 경우 4KB).

AGP 형식 조리개 세그먼트( Agp 비트 필드 플래그가 Flags 멤버에 지정됨)의 경우 비디오 메모리 관리자는 가능한 한 많은 조리개 공간을 할당하므로 이 멤버는 무시됩니다.

[out] NbOfBanks

은행업이 사용되는 경우(즉, Flags 멤버에 UseBanking 비트 필드 플래그가 설정된 경우) 세그먼트의 은행 수입니다.

[out] pBankRangeTable

세그먼트의 각 뱅크를 구분하는 범위를 나타내는 값의 배열입니다. 드라이버는 Flags 멤버에서 UseBanking 비트 필드 플래그를 설정하는 경우에만 이 배열을 지정 합니다 .

배열은 NbOfBanksth 뱅크를 통해 첫 번째 은행의 끝 주소(즉, 각 은행의 세그먼트로 끝 오프셋)를 지정합니다. 다음 사항에 유의하세요.

  • 은행은 연속적입니다.

  • 첫 번째 은행은 세그먼트의 오프셋 0에서 시작합니다.

  • 마지막 은행은 세그먼트의 끝에서 종료되므로 드라이버는 마지막 은행의 끝 주소를 지정할 필요가 없습니다.

[out] CommitLimit

세그먼트에 커밋할 수 있는 최대 바이트 수입니다. 메모리 세그먼트의 경우 커밋 제한은 크기 멤버에 지정된 세그먼트의 크기와 항상 동일합니다. 조리개 세그먼트의 경우 드라이버는 적은 양의 실제 메모리가 있는 시스템의 세그먼트에 커밋할 수 있는 메모리 양을 제한할 수 있습니다.

SystemMemoryEndAddress

부분적으로 시스템 메모리로 구성된 세그먼트의 경우 이 주소 이후에 시작되는 모든 할당이 최대 절전 모드 상태로 전환되어 제거됩니다. 세그먼트 주소가 SystemMemoryEndAddress보다 작거나 같은 시스템 메모리에 완전히 존재하는 할당은 이 전환에서 제거되지 않습니다.

디스플레이 미니포트 드라이버는 세그먼트가 최대 절전 모드 상태로 전환될 때 부분적으로 유지되는 경우 이 멤버를 NULL이 아닌 값으로 설정해야 합니다. 이 경우 DXGK_SEGMENTFLAGS 구조체의 PartiallyPreservedDuringHibernate 멤버를 설정해야 합니다.

드라이버 예약 메모리는 세그먼트 주소 0에서 SystemMemoryEndAddress(포함)를 통해 실행됩니다. BIOS 예약 메모리는 (SystemMemoryEndAddress+1)에서 세그먼트의 끝까지 실행됩니다.

Reserved

이 멤버는 예약되어 있으며 0으로 설정해야 합니다.

설명

이 구조체는 그래픽 하위 시스템이 DXGKARG_QUERYADAPTERINFO 구조체Type 멤버에서 DXGKQAITYPE_QUERYSEGMENT3 값을 지정하는 DxgkDdiQueryAdapterInfo 함수 호출에 대한 응답으로 메모리 세그먼트에 대한 정보를 반환하기 위해 WDDM 1.2 이상 커널 모드 디스플레이 미니포트 드라이버에서 사용됩니다.

이 구조체는 DXGK_QUERYSEGMENTOUT3 구조체의 pSegmentDescriptor 멤버를 가리켰습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
지원되는 최소 서버 Windows Server 2012
머리글 d3dkmddi.h

추가 정보

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_QUERYSEGMENTOUT3

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo