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
};
[out] UINT Value;
};
} DXGK_SEGMENTFLAGS;
구성원
[out] Aperture
세그먼트가 메모리 세그먼트가 아닌 조리개 세그먼트인지 여부를 지정하는 UINT 값입니다. 조리개 세그먼트에는 할당에 대한 콘텐츠를 보유할 수 있는 실제 페이지가 없습니다. 비디오 메모리 관리자가 메모리 세그먼트에 할당을 페이지로 지정하면 메모리 관리자는 시스템 메모리 백업 저장소에서 세그먼트 위치로 할당 내용을 전송합니다. 비디오 메모리 관리자가 할당을 조리개 세그먼트에 페이지로 지정하면 메모리 관리자는 할당 백업 저장소의 실제 페이지를 세그먼트에 매핑합니다.
드라이버가 이 멤버를 지정하는 경우 DxgkDdiBuildPagingBuffer 함수에 대한 map-aperture-segment 및 unmap-aperture-segment 작업 형식도 구현해야 합니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000001)의 첫 번째 비트를 설정하는 것과 같습니다.
[out] Agp
세그먼트가 AGP 유형 조리개 세그먼트인지 여부를 지정하는 UINT 값으로, 칩셋이 노출하는 AGP 조리개 일부를 사용합니다. 비디오 메모리 관리자는 기본 조리개에 대한 페이지를 할당하고 GART(그래픽 주소 다시 매핑 테이블) 드라이버와 통신하여 조리개에 대한 메모리를 매핑하고 매핑 해제합니다. 하나의 AGP 세그먼트만 존재할 수 있으므로 드라이버는 다른 DXGK_SEGMENTFLAGS 비트 필드 플래그를 사용하여 Agp 비트 필드 플래그를 지정해서는 안 됩니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000002)의 두 번째 비트를 설정하는 것과 같습니다.
[out] CpuVisible
메모리 세그먼트를 설명하는 DXGK_SEGMENTDESCRIPTOR 구조체의 CpuTranslatedAddress 멤버가 지정한 주소의 CPU에서 메모리 세그먼트에 액세스할 수 있는지 여부를 지정하는 UINT 값입니다.
이 멤버는 AGP 형식 조리개 세그먼트를 포함하여 조리개 세그먼트에 아무런 의미가 없습니다. 유일한 예외는 사용자 모드 표시 드라이버가 기본 할당에 대한 대체 가상 주소를 설정하지 않은 경우(즉, 드라이버가 pfnLockCb 함수를 호출하는 동안 D3DDDICB_LOCKFLAGS 구조체의 Flags 멤버에서 UseAlternateVA를 설정하지 않은 경우) 발생합니다.
자세한 내용은 비고를 참조하세요.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000004)의 세 번째 비트를 설정하는 것과 같습니다.
[out] UseBanking
세그먼트가 세그먼트 내의 할당 배치에 대한 힌트를 비디오 메모리 관리자에게 제공하는 데 사용하는 은행으로 분할되는지 여부를 지정하는 UINT 값입니다. 또한 드라이버는 세그먼트를 설명하는 DXGK_SEGMENTDESCRIPTOR 구조의 NbOfBanks 및 pBankRangeTable 멤버에 유효한 은행 정보를 지정해야 합니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000008)의 네 번째 비트를 설정하는 것과 같습니다.
[out] CacheCoherent
조리개 세그먼트가 조리개에 매핑된 캐시 가능한 페이지와 캐시 일관성을 유지할 수 있는지 여부를 지정하는 UINT 값입니다. 이 멤버는 Aperture 멤버를 설정해야만 설정할 수 있습니다(즉, CacheCoherent 는 메모리 세그먼트에 의미가 없음).
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000010)의 다섯 번째 비트를 설정하는 것과 같습니다.
[out] PitchAlignment
세그먼트에 매핑된 할당을 피치 정렬해야 하는지 여부를 지정하는 UINT 값입니다. 이 유형의 세그먼트에서 비디오 메모리 관리자는 할당에 대해 DXGK_ALLOCATIONINFO 구조체의 Size 멤버를 사용하여 할당에 대한 백업 저장소를 할당합니다. 그러나 비디오 메모리 관리자는 DXGK_ALLOCATIONINFO PitchAlignedSize 멤버를 사용하여 세그먼트에 대한 리소스를 할당합니다. 이러한 유형의 세그먼트를 대상으로 하는 할당은 일반적으로 지원 저장소 및 세그먼트에 대해 다른 크기를 집니다. 백업 저장소 크기가 세그먼트 크기와 일치하지 않는 경우 드라이버는 할당에서 데이터를 올바르게 이동하는 방법을 결정해야 합니다. 이 유형의 세그먼트는 제거에 사용할 수 없습니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000020)의 여섯 번째 비트를 설정하는 것과 같습니다.
[out] PopulatedFromSystemMemory
초기화 중에 드라이버가 할당한 시스템 메모리에서 메모리 세그먼트가 실제로 채워지는지 여부를 지정하는 UINT 값입니다. BIOS가 예약된 시스템 메모리에서 메모리 세그먼트가 채워지고 운영 체제에서 액세스할 수 없는 경우(즉, 운영 체제에서 총 시스템 메모리 양을 보고할 때 운영 체제에서 이 시스템 메모리를 계산하지 않음) 드라이버는 이 플래그를 설정하지 않아야 합니다. 이 플래그는 유효하지 않으며 조리개 세그먼트에서 무시됩니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000040)의 일곱 번째 비트를 설정하는 것과 같습니다.
[out] PreservedDuringStandby
세그먼트가 대기 시스템 전원 상태로 전환될 때 유지되는지 여부를 지정하는 UINT 값입니다.
전원 전환 옵션에 대한 자세한 내용은 비고를 참조하세요.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000080)의 여덟 번째 비트를 설정하는 것과 같습니다.
Windows 8 시작하는 것이 지원되었습니다.
[out] PreservedDuringHibernate
최대 절전 모드 시스템 전원 상태로 전환할 때 세그먼트가 유지되는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000100)의 9번째 비트를 설정하는 것과 같습니다.
Windows 8 시작하는 것이 지원되었습니다.
[out] PartiallyPreservedDuringHibernate
최대 절전 모드 시스템 전원 상태로 전환할 때 세그먼트가 부분적으로 유지되는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000200)의 10번째 비트를 설정하는 것과 같습니다.
Windows 8 시작하는 것이 지원되었습니다.
[out] DirectFlip
세그먼트가 직접 대칭 이동 할당을 지원하는지 여부를 지정하는 UINT 값입니다. 이 경우 드라이버는 이 세그먼트에서 직접 대칭 이동 할당을 고정하고 검사할 수 있는지 확인해야 합니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00000400)의 11번째 비트를 설정하는 것과 같습니다.
Windows 8 시작하는 것이 지원되었습니다.
[out] Use64KBPages
설정하면 GPU 메모리 세그먼트는 64KB 페이지를 지원합니다. 그렇지 않으면 4KB 페이지가 지원됩니다. 드라이버가 캡을 설정하고 할당을 세그먼트에 페이징할 수 있는 경우 DXGK_ALLOCATIONINFO 커널 모드 드라이버에서 반환되는 할당 맞춤은 64KB의 배수여야 합니다.
Windows 10 시작 지원.
[out] ReservedSysMem
시스템 사용을 위해 예약되며 커널 모드 드라이버에서 설정하면 안 됩니다.
Windows 10 시작 지원.
[out] SupportsCpuHostAperture
설정되면 CPU 호스트 조리개를 통해 세그먼트를 매핑할 수 있습니다. 이 플래그는 CpuVisible 플래그와 함께 사용할 수 없습니다.
Windows 10 시작 지원.
[out] SupportsCachedCpuHostAperture
이 설정은 하드웨어가 CPU 캐시 일관된 CPU 호스트 조리개를 지원함을 나타냅니다. 또한 SupportsCpuHostAperture 플래그를 설정해야 합니다. 플래그는 일반적으로 소프트웨어 GPU 에뮬레이션 드라이버에 의해 설정됩니다.
Windows 10 시작 지원.
[out] ApplicationTarget
설정하면 이 세그먼트가 애플리케이션 예산의 대상으로 지정되어야 임을 나타냅니다.
Windows 10 시작 지원.
VprSupported
VprPreservedDuringStandby
EncryptedPagingSupported
LocalBudgetGroup
NonLocalBudgetGroup
PopulatedByReservedDDRByFirmware
[out] Reserved
이 멤버는 예약되어 있으며 0으로 설정해야 합니다.
[out] 이 멤버는 예약되어 있으며 0으로 설정해야 합니다. 이 멤버를 0으로 설정하는 것은 32비트 값 멤버의 나머지 21비트(0xFFFFF800)를 0으로 설정하는 것과 같습니다.
[out] 이 멤버는 예약되어 있으며 0으로 설정해야 합니다. 이 멤버를 0으로 설정하는 것은 32비트 값 멤버의 나머지 22비트(0xFFFFFC00)를 0으로 설정하는 것과 같습니다.
[out] Value
세그먼트의 속성을 식별하는 32비트 값을 포함할 수 있는 DXGK_SEGMENTFLAGS 있는 공용 구조체의 멤버입니다.
설명
드라이버는 32비트 값 멤버에서 비트를 설정하거나 DXGK_SEGMENTFLAGS 포함된 구조체의 개별 멤버를 설정하여 세그먼트의 속성을 지정할 수 있습니다.
AGP 형식 조리개 세그먼트의 경우 드라이버는 DXGK_SEGMENTFLAGS 포함된 공용 구조체에서 구조체의 Agp 멤버를 단독으로 설정해야 합니다. AGP 형식 조리개 세그먼트는 조리개이며 CPU에 표시되지만 다른 멤버가 설정된 경우 어댑터를 초기화하지 못합니다.
할당이 공유 주 할당(DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA)에서 조리개 세그먼트를 사용하는 특수한 경우입니다. StandardAllocationType 은 D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE), DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA 가 설정되지 않았으므로 드라이버는 섹션 지원 주 할당(DXGK_VIDMMCAPS)을 사용해야 합니다. 드라이버 의 DxgkDdiQueryAdapterInfo 함수가 호출될 때 SectionBackedPrimary가 설정됩니다. 섹션 지원 주 데이터베이스를 사용하면 조리개 세그먼트에 대한 CpuVisible 의 제한을 방지할 수 있습니다.
섹션 지원 공유 기본 할당을 사용하여 조리개 세그먼트에 대한 CpuVisible 의 제한을 방지할 수 있습니다. 이 경우 공유 주 할당(DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA에 조리개 세그먼트를 사용합니다. StandardAllocationType 은 D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE), DXGK_ALLOCATIONINFOFLAGS 설정하지 않습니다. UseAlternateVA를 사용하고 섹션 지원 기본 할당( DXGK_VIDMMCAPS 설정)을 사용합니다. SectionBackedPrimary) 드라이버의 DxgkDdiQueryAdapterInfo 함수가 호출될 때
최적화된 대기 설정
PreservedDuringStandby, PreservedDuringHibernate 및 PartiallyPreservedDuringHibernate 멤버에 대한 값의 조합은 다음과 같이 시스템이 저전력(대기) 시스템 상태를 입력할 때 세그먼트가 해당 콘텐츠를 제거할지 여부를 결정합니다.| 대기 중 보존됨 | 최대 절전 모드 동안 유지됨 | 최대 절전 모드에서 부분적으로 유지됨 | 대기 상태 | 최대 절전 모드 상태 |
|---|---|---|---|---|
| 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 포함) |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기