DXGK_SEGMENTFLAGS 구조체(d3dkmddi.h)

DXGK_SEGMENTFLAGS 구조체는 드라이버가 해당 DxgkDdiQueryAdapterInfo 함수를 호출하여 제공하는 세그먼트의 속성을 식별합니다.

구문

typedef struct _DXGK_SEGMENTFLAGS {
  union {
    struct {
      UINT Aperture : 1;
      UINT Agp : 1;
      UINT CpuVisible : 1;
      UINT UseBanking : 1;
      UINT CacheCoherent : 1;
      UINT PitchAlignment : 1;
      UINT PopulatedFromSystemMemory : 1;
      UINT PreservedDuringStandby : 1;
      UINT PreservedDuringHibernate : 1;
      UINT PartiallyPreservedDuringHibernate : 1;
      UINT DirectFlip : 1;
      UINT Use64KBPages : 1;
      UINT ReservedSysMem : 1;
      UINT SupportsCpuHostAperture : 1;
      UINT SupportsCachedCpuHostAperture : 1;
      UINT ApplicationTarget : 1;
      UINT VprSupported : 1;
      UINT VprPreservedDuringStandby : 1;
      UINT EncryptedPagingSupported : 1;
      UINT LocalBudgetGroup : 1;
      UINT NonLocalBudgetGroup : 1;
      UINT PopulatedByReservedDDRByFirmware : 1;
#if ...
      UINT Reserved : 10;
#elif
      UINT Reserved : 11;
#elif
      UINT Reserved : 21;
#else
      UINT Reserved : 22;
#endif
    };
    UINT Value;
  };
} DXGK_SEGMENTFLAGS;

멤버

Aperture

[out] 세그먼트가 메모리 세그먼트가 아닌 조리개 세그먼트인지 여부를 지정하는 UINT 값입니다. 조리개 세그먼트에는 할당에 대한 콘텐츠를 보유할 수 있는 실제 페이지가 없습니다. 비디오 메모리 관리자가 메모리 세그먼트에 할당을 페이지로 지정하면 메모리 관리자는 할당 내용을 시스템 메모리 지원 저장소에서 세그먼트 위치로 전송합니다. 비디오 메모리 관리자가 할당을 조리개 세그먼트에 페이지로 지정하면 메모리 관리자는 할당 백업 저장소의 실제 페이지를 세그먼트에 매핑합니다.

드라이버가 이 멤버를 지정하는 경우 DxgkDdiBuildPagingBuffer 함수에 대한 map-aperture-segment 및 unmap-aperture-segment 작업 형식도 구현해야 합니다.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000001)의 첫 번째 비트를 설정하는 것과 같습니다.

Agp

[out] 세그먼트가 칩셋이 노출하는 AGP 조리개 부분을 사용하는 AGP**형식 조리개 세그먼트인지 여부를 지정하는 UINT 값입니다. 비디오 메모리 관리자는 기본 조리개에 대한 페이지를 할당하고 GART(그래픽 주소 다시 매핑 테이블) 드라이버와 통신하여 조리개에 대한 메모리를 매핑하고 매핑 해제합니다. 하나의 AGP 세그먼트만 존재할 수 있으므로 드라이버는 다른 DXGK_SEGMENTFLAGS 비트 필드 플래그를 사용하여 Agp 비트 필드 플래그를 지정해서는 안 됩니다.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000002)의 두 번째 비트를 설정하는 것과 같습니다.

CpuVisible

[out] 메모리 세그먼트를 설명하는 DXGK_SEGMENTDESCRIPTOR 구조체CpuTranslatedAddress 멤버가 지정한 주소의 CPU에서 메모리 세그먼트에 액세스할 수 있는지 여부를 지정하는 UINT 값입니다.

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

자세한 내용은 비고를 참조하세요.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000004)의 세 번째 비트를 설정하는 것과 같습니다.

UseBanking

[out] 세그먼트가 드라이버에서 비디오 메모리 관리자에게 세그먼트 내 할당 배치에 대한 힌트를 제공하는 데 사용하는 뱅크로 분할되는지 여부를 지정하는 UINT 값입니다. 또한 드라이버는 세그먼트를 설명하는 DXGK_SEGMENTDESCRIPTOR 구조의 NbOfBankspBankRangeTable 멤버에 유효한 은행 정보를 지정해야 합니다.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000008)의 네 번째 비트를 설정하는 것과 같습니다.

CacheCoherent

[out] 조리개 세그먼트가 조리개에 매핑된 캐시 가능한 페이지와 캐시 일관성을 유지할 수 있는지 여부를 지정하는 UINT 값입니다. 이 멤버는 Aperture 멤버를 설정하는 경우에만 설정할 수 있습니다(즉, CacheCoherent 는 메모리 세그먼트에 의미가 없음).

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000010)의 다섯 번째 비트를 설정하는 것과 같습니다.

PitchAlignment

[out] 세그먼트에 매핑된 할당을 피치 정렬해야 하는지 여부를 지정하는 UINT 값입니다. 이 유형의 세그먼트에서 비디오 메모리 관리자는 할당에 DXGK_ALLOCATIONINFO 구조체의 Size 멤버를 사용하여 할당에 대한 백업 저장소를 할당합니다. 그러나 비디오 메모리 관리자는 DXGK_ALLOCATIONINFO PitchAlignedSize 멤버를 사용하여 세그먼트에 대한 리소스를 할당합니다. 이러한 유형의 세그먼트를 대상으로 하는 할당은 일반적으로 지원 저장소 및 세그먼트에 대해 다른 크기를 집니다. 백업 저장소 크기가 세그먼트 크기와 일치하지 않는 경우 드라이버는 할당에서 데이터를 올바르게 이동하는 방법을 결정해야 합니다. 이 유형의 세그먼트는 제거에 사용할 수 없습니다.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000020)의 여섯 번째 비트를 설정하는 것과 같습니다.

PopulatedFromSystemMemory

[out] 초기화 중에 드라이버가 할당한 시스템 메모리에서 메모리 세그먼트가 실제로 채워지는지 여부를 지정하는 UINT 값입니다. BIOS가 예약한 시스템 메모리에서 메모리 세그먼트가 채워지고 운영 체제에서 액세스할 수 없는 경우(즉, 운영 체제가 총 시스템 메모리 양을 보고할 때 운영 체제에서 이 시스템 메모리를 계산하지 않음) 드라이버는 이 플래그를 설정하지 않아야 합니다. 이 플래그는 유효하지 않으며 조리개 세그먼트에서 무시됩니다.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000040)의 일곱 번째 비트를 설정하는 것과 같습니다.

PreservedDuringStandby

[out] 대기 시스템 전원 상태로 전환할 때 세그먼트가 유지되는지 여부를 지정하는 UINT 값입니다.

전원 전환 옵션에 대한 자세한 내용은 비고를 참조하세요.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000080)의 여덟 번째 비트를 설정하는 것과 같습니다.

Windows 8 부터 지원합니다.

PreservedDuringHibernate

[out] 최대 절전 모드 시스템 전원 상태로 전환할 때 세그먼트가 유지되는지 여부를 지정하는 UINT 값입니다. PreservedDuringStandby 멤버도 설정되지 않은 한 이 플래그를 설정하지 마세요. 전원 전환 옵션에 대한 자세한 내용은 비고를 참조하세요.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000100)의 9번째 비트를 설정하는 것과 같습니다.

Windows 8 부터 지원합니다.

PartiallyPreservedDuringHibernate

[out] 최대 절전 모드 시스템 전원 상태로 전환할 때 세그먼트가 부분적으로 유지되는지 여부를 지정하는 UINT 값입니다. PreservedDuringStandby 멤버도 설정되지 않은 한 이 플래그를 설정하지 마세요. 전원 전환 옵션에 대한 자세한 내용은 비고를 참조하세요.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000200)의 10번째 비트를 설정하는 것과 같습니다.

Windows 8 부터 지원합니다.

DirectFlip

[out] 세그먼트가 직접 대칭 이동 할당을 지원하는지 여부를 지정하는 UINT 값입니다. 이 경우 드라이버는 이 세그먼트에서 직접 대칭 이동 할당을 고정하고 검사할 수 있는지 확인해야 합니다.

이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000400)의 11번째 비트를 설정하는 것과 같습니다.

Windows 8 부터 지원합니다.

Use64KBPages

[out] 설정하면 GPU 메모리 세그먼트는 64KB 페이지를 지원합니다. 그렇지 않으면 4KB 페이지가 지원됩니다. 드라이버가 한도를 설정하고 할당을 세그먼트에 페이징할 수 있는 경우 DXGK_ALLOCATIONINFO 커널 모드 드라이버에서 반환되는 할당 맞춤은 64KB의 여러 여야 합니다.

Windows 10 부터 지원합니다.

ReservedSysMem

[out] 시스템 사용을 위해 예약되며 커널 모드 드라이버에서 설정해서는 안 됩니다.

Windows 10 부터 지원합니다.

SupportsCpuHostAperture

[out] 설정하면 세그먼트가 CPU 호스트 조리개에 매핑될 수 있습니다. 이 플래그는 CpuVisible 플래그와 함께 사용할 수 없습니다.

Windows 10 부터 지원합니다.

SupportsCachedCpuHostAperture

[out] 이 설정은 하드웨어가 CPU 캐시 일관된 CPU 호스트 조리개를 지원함을 나타냅니다. 또한 SupportsCpuHostAperture 플래그를 설정해야 합니다. 플래그는 일반적으로 소프트웨어 GPU 에뮬레이션 드라이버에 의해 설정됩니다.

Windows 10 부터 지원합니다.

ApplicationTarget

[out] 설정하면 이 세그먼트가 애플리케이션 예산의 대상이 되어야 했음을 나타냅니다.

Windows 10 부터 지원합니다.

VprSupported

[out] 설정되면 VPR(비디오 보호 지역)이 지원됨을 나타냅니다.

VprPreservedDuringStandby

[out] 가 설정되면 VPR의 콘텐츠가 대기 중에 유지됨을 나타냅니다.

EncryptedPagingSupported

[out] 를 설정하면 페이징 중에 하드웨어로 보호되는 할당이 암호화됨을 나타냅니다.

LocalBudgetGroup

[out] 가 설정되면 이 세그먼트가 로컬 메모리 세그먼트 예산 그룹에 대해 계산됨을 나타냅니다.

NonLocalBudgetGroup

[out] 를 설정하면 이 세그먼트가 로컬이 아닌 메모리 세그먼트 예산 그룹에 대해 계산됨을 나타냅니다.

PopulatedByReservedDDRByFirmware

[out] 를 설정하면 이 세그먼트가 펌웨어에 의해 예약된 시스템 DDR 메모리에서 채워지게 됨을 나타냅니다. Windows Server 2022(WDDM 2.9)부터 사용할 수 있습니다.

Reserved

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

Value

[out] 세그먼트의 속성을 식별하는 32비트 값을 보유할 수 있는 DXGK_SEGMENTFLAGS 포함된 공용 구조체의 멤버입니다.

설명

드라이버는 32비트 Value 멤버에서 비트를 설정하거나 DXGK_SEGMENTFLAGS 포함된 구조체의 개별 멤버를 설정하여 세그먼트의 속성을 지정할 수 있습니다.

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

할당이 공유 기본 할당(DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA에 조리개 세그먼트를 사용하는 특수한 경우)StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) 및 DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA 가 설정되지 않았으므로 드라이버는 섹션 기반 기본 할당(DXGK_VIDMMCAPS)을 사용해야 합니다.드라이버DxgkDdiQueryAdapterInfo 함수가 호출될 때 SectionBackedPrimary가 설정됩니다. 섹션 기반 기본을 사용하면 조리개 세그먼트에 대한 CpuVisible 의 제한을 피할 수 있습니다.

섹션 기반 공유 기본 할당을 사용하여 조리개 세그먼트에 대한 CpuVisible 의 제한을 방지할 수 있습니다. 이 경우 공유 기본 할당(DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA에서 조리개 세그먼트를 사용합니다.StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) DXGK_ALLOCATIONINFOFLAGS 설정하지 않습니다. UseAlternateVA를 사용하고 섹션 기반 기본 할당( DXGK_VIDMMCAPS 설정)을 사용합니다.SectionBackedPrimary) 드라이버의 DxgkDdiQueryAdapterInfo 함수가 호출될 때

최적화된 대기 설정

PreservedDuringStandby, PreservedDuringHibernatePartiallyPreservedDuringHibernate 멤버에 대한 값의 조합은 다음과 같이 시스템이 저전력(대기) 시스템 상태가 될 때 세그먼트가 해당 콘텐츠를 제거할지 여부를 결정합니다.

대기 중 보존됨 최대 절전 모드 동안 유지됨 최대 절전 모드 동안 부분적으로 보존됨 대기 상태 최대 절전 모드 상태
1 1 1 잘못됨 잘못됨
1 1 0 제거되지 않음 제거되지 않음
1 0 1 제거되지 않음 부분적으로 제거됨
1 0 0 제거되지 않음 제거
0 1 1 잘못됨 잘못됨
0 1 0 잘못됨 잘못됨
0 0 1 잘못됨 잘못됨
0 0 0 제거 제거

운영 체제는 "유효하지 않음"으로 표시된 이 테이블의 조합을 인식하지 못합니다.

하이브리드 절전 모드를 사용하도록 설정하면 시스템이 최대 절전 모드인 것처럼 작동합니다. 최대 절전 모드에서 유지되지 않는 세그먼트는 저전력 상태로 전환되더라도 제거됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista부터 사용할 수 있습니다.
머리글 d3dkmddi.h(D3dkmddi.h 포함)

추가 정보

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTDESCRIPTOR3

DxgkDdiBuildPagingBuffer

DxgkDdiQueryAdapterInfo