다음을 통해 공유


DXGK_VIDSCHCAPS 구조체(d3dkmddi.h)

DXGK_VIDSCHCAPS 구조에는 커널 모드 디스플레이 미니포트 드라이버(KMD)가 지원할 수 있는 GPU의 일정 기능을 식별하는 비트 필드 플래그가 있습니다.

구문

typedef struct _DXGK_VIDSCHCAPS {
  union {
    struct {
      UINT MultiEngineAware : 1;
      UINT VSyncPowerSaveAware : 1;
      UINT PreemptionAware : 1;
      UINT NoDmaPatching : 1;
      UINT CancelCommandAware : 1;
      UINT No64BitAtomics : 1;
      UINT LowIrqlPreemptCommand : 1;
      UINT HwQueuePacketCap : 4;
      UINT NativeGpuFence : 1;
      UINT OptimizedNativeFenceSignaledInterrupt : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 25;
#elif
      UINT Reserved : 27;
#else
      UINT Reserved : 30;
#endif
    };
    UINT Value;
  };
} DXGK_VIDSCHCAPS;

멤버

MultiEngineAware

드라이버가 DxgkDdiCreateContext 및 DxgkDdiDestroyContext 함수를 통해 디바이스 컨텍스트의 생성 및 소멸을 지원하는지 여부와 디바이스 컨텍스트 사용(DxgkDdiPresentDxgkDdiRender 함수를 통해)을 지원하는지 여부를 지정하는 UINT 값입니다. 드라이버가 컨텍스트 만들기를 지원하지 않는 경우 컨텍스트에 대한 핸들을 전달하는 드라이버에 대한 모든 호출에 대해 Microsoft DirectX 그래픽 커널 하위 시스템은 컨텍스트에 대한 핸들을 디바이스에 대한 핸들로 바꿉니다.

VSyncPowerSaveAware

드라이버가 수직 동기화 절전 기능을 지원하는지 여부를 지정하는 UINT 값입니다.

VSyncPowerSaveAware가 1(TRUE)로 설정된 경우 OS는 일부 애플리케이션의 사용으로 인해 발생하는 수직 동기화 인터럽트 사용 안 을 사용하지 않도록 설정하고 사용하도록 설정하여 전원을 절약할 수 있습니다. VSyncPowerSaveAware가 0(FALSE)으로 설정된 경우 OS는 수직 동기화 인터럽트 발생을 유발할 수 있는 애플리케이션에 대해 수직 동기화 인터럽트 기능을 사용하지 않도록 설정하지 않습니다. Windows Server 2008 및 Windows Vista SP1부터 지원됩니다.

PreemptionAware

드라이버가 Windows 8 이상 버전의 Windows GPU 선점 정책을 지원하는지 여부를 지정하는 UINT 값입니다. 이 정책을 사용하면 OS는 **TDR(시간 제한 검색 및 복구) 프로세스를 시작하기 전에 항상 GPU에 선점 요청을 실행합니다. Windows 8 부터 지원합니다.

PreemptionAware가 1(TRUE)로 설정된 경우 드라이버는 Windows 8 이상 버전의 Windows 선점 정책을 지원합니다. PreemptionAware가 1로 설정된 경우 MultiEngineAware 멤버도 값 1로 설정해야 합니다. PreemptionAware가 1로 설정되어 있지만 MultiEngineAware가 0으로 설정된 경우 OS는 드라이버 초기화 프로세스를 중지하고 오류 코드를 반환합니다.

PreemptionAware가 0(FALSE)으로 설정된 경우 드라이버는 Windows 7의 선점 정책을 지원합니다. 이 정책을 사용하면 잠재적으로 장기 실행 작업이 GPU에서 실행되는 동안 OS가 선점 요청을 실행하지 않을 수 있습니다. 따라서 이러한 GPU 요청은 TDR 프로세스가 시작되기 전에 선점되지 않습니다. 이로 인해 TDR 프로세스가 GPU를 반복적으로 다시 설정하여 시스템 중지 오류가 발생할 수 있습니다.

NoDmaPatching

드라이버가 여러 부분으로 분할된 DMA 버퍼에 대해 누수 검색을 사용하지 않도록 설정할지 여부를 지정하는 UINT 값입니다. 이 검색은 DMA 버퍼의 각 부분에 물리적 주소를 할당하거나 패치하기 위해 드라이버의 DxgkDdiPatch 함수를 호출한 후에 수행됩니다. Windows 8 부터 지원합니다.

가상 주소를 지원하는 디스플레이 디바이스는 DMA 버퍼 주소의 값을 패치하지 않고도 가상 주소를 새 비디오 메모리 위치로 다시 프로그래밍할 수 있습니다. 이러한 유형의 디스플레이 디바이스의 경우 드라이버는 NoDmaPatching을 1로 설정해야 합니다.

NoDmaPatching이 1(TRUE)로 설정된 경우 드라이버는 누수 검색을 사용하지 않도록 설정하고 DMA 버퍼 분할 동작은 Windows 7과 동일합니다. NoDmaPatching을 1로 설정하면 PreemptionAwareMultiEngineAware 멤버도 1로 설정해야 합니다. NoDmaPatching이 1로 설정되어 있지만 PreemptionAware 또는 MultiEngineAware가 0으로 설정된 경우 OS는 드라이버 초기화 프로세스를 중지하고 오류 코드를 반환합니다.

NoDmaPatching이 0(FALSE)으로 설정된 경우 드라이버는 패치된 DMA 버퍼 주소에 대해 누수 검색을 사용하도록 설정합니다. OS는 드라이버의 DxgkDdiPatch 함수를 호출하기 전에 누출 검색을 수행합니다.

CancelCommandAware

하드웨어 큐에서 명령이 제거된 후 드라이버가 DxgkDdiCancelCommand 함수를 통해 내부 리소스 정리를 지원하는지 여부를 지정하는 UINT 값입니다. Windows 8 부터 지원합니다.

CancelCommandAware가 1(TRUE)로 설정된 경우 드라이버는 취소된 DMA 패킷과 연결된 리소스 정리를 지원합니다. CancelCommandAware가 1로 설정된 경우 MultiEngineAware 멤버도 1로 설정해야 합니다. CancelCommandAware가 1로 설정되어 있지만 MultiEngineAware가 0으로 설정된 경우 OS는 오류 코드를 반환합니다.

CancelCommandAware가 0(FALSE)으로 설정된 경우 드라이버는 리소스 정리를 지원하지 않습니다.

No64BitAtomics

No64BitAtomics가 1(TRUE)로 설정된 경우 드라이버는 GPU가 32비트 값만 원자성으로 업데이트할 수 있음을 나타냅니다. 이 경우 OS는 펜스 랩어라운드 케이스를 자동으로 처리합니다. 그러나 미해결 대기 및 신호 펜스 값이 마지막으로 신호된 펜스 값과 UINT_MAX/2를 초과할 수 없다는 제한이 있습니다. Windows 10 부터 지원합니다.

No64BitAtomics가 0(FALSE)으로 설정된 경우 드라이버는 GPU가 CPU에서 볼 수 있는 64비트 값을 원자성으로 업데이트할 수 있음을 나타냅니다.

LowIrqlPreemptCommand

HwQueuePacketCap

노드에 큐에 대기할 수 있는 최대 DMA 패킷 수입니다.

NativeGpuFence

OS에서 DXGK_FEATURE_NATIVE_FENCE 기능을 사용하도록 설정한 경우 드라이버는 NativeGpuFence 비트를 1로 설정하여 어댑터 초기화 중에 네이티브 GPU 펜스 기능에 대한 지원을 선언할 수 있습니다. 이 기능은 해당 D3DKMT_WDDM_3_1_CAPS::NativeGpuFenceSupported 비트를 통해 사용자 모드에 노출됩니다. 자세한 내용은 네이티브 GPU 펜스 개체를 참조하세요. Windows 11 버전 22H2(WDDM 3.1)부터 사용할 수 있습니다.

OptimizedNativeFenceSignaledInterrupt

드라이버가 신호 인터럽트에서 GPU가 실행 중인 HWQueue의 KMD 핸들만 DXGKARGCB_NOTIFY_INTERRUPT_DATA::NativeFenceSignaled 에서 지정할 수 있는 경우 이 TRUE를 설정합니다. 자세한 내용은 네이티브 GPU 펜스 개체를 참조하세요. Windows 11 버전 22H2(WDDM 3.1)부터 사용할 수 있습니다.

Reserved

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

Value

공용 구조체의 비트 필드 플래그에 액세스하는 다른 방법입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
머리글 d3dkmddi.h(D3dkmddi.h 포함)

추가 정보

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender