DXGK_VIDSCHCAPS 구조체(d3dkmddi.h)

DXGK_VIDSCHCAPS 구조체는 드라이버가 지원할 수 있는 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;
#if ...
      UINT Reserved : 20;
#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 그래픽 커널 하위 시스템은 컨텍스트에 대한 핸들을 디바이스에 대한 핸들로 바꿉니다.

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

VSyncPowerSaveAware

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

VSyncPowerSaveAware가 1(TRUE)로 설정된 경우 운영 체제는 일부 애플리케이션의 사용으로 인해 발생하는 수직 동기화 인터럽트 사용 안 함 및 활성화로 전원을 절약할 수 있습니다. VSyncPowerSaveAware가 0(FALSE)으로 설정된 경우 운영 체제는 수직 동기화 인터럽트 발생을 유발할 수 있는 애플리케이션에 대해 수직 동기화 인터럽트 기능을 사용하지 않도록 설정하지 않습니다.

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

Windows Server 2008 및 Windows Vista SP1부터 지원됩니다.

PreemptionAware

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

PreemptionAware가 1(TRUE)로 설정된 경우 드라이버는 Windows 8 이상 버전의 Windows 선점 정책을 지원합니다.

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

참고

PreemptionAware가 1로 설정된 경우 MultiEngineAware 멤버도 값 1로 설정해야 합니다. PreemptionAware가 1로 설정되어 있지만 MultiEngineAware가 0으로 설정된 경우 운영 체제는 드라이버 초기화 프로세스를 중지하고 오류 코드를 반환합니다.

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

Windows 8 시작 지원.

NoDmaPatching

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

참고

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

NoDmaPatching이 1(TRUE)로 설정된 경우 드라이버는 누수 검색을 사용하지 않도록 설정하고 DMA 버퍼 분할 동작은 Windows 7과 동일합니다.

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

참고

NoDmaPatching이 1로 설정된 경우 PreemptionAwareMultiEngineAware 멤버도 값 1로 설정해야 합니다. NoDmaPatching이 1로 설정되어 있지만 PreemptionAware 또는 MultiEngineAware가 0으로 설정된 경우 운영 체제는 드라이버 초기화 프로세스를 중지하고 오류 코드를 반환합니다.

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

Windows 8 시작 지원.

CancelCommandAware

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

CancelCommandAware가 1(TRUE)로 설정된 경우 드라이버는 취소된 DMA 패킷과 연결된 리소스 정리를 지원합니다. CancelCommandAware가 0(FALSE)으로 설정된 경우 드라이버는 리소스 정리를 지원하지 않습니다.

참고

CancelCommandAware가 1로 설정된 경우 MultiEngineAware 멤버도 값 1로 설정해야 합니다. CancelCommandAware가 1로 설정되어 있지만 MultiEngineAware가 0으로 설정된 경우 운영 체제에서 오류 코드를 반환합니다.

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

Windows 8 시작 지원.

No64BitAtomics

의미
TRUE GPU가 32비트 값만 원자성으로 업데이트할 수 있음을 나타냅니다. 이 경우 OS는 펜스 랩어라운드 케이스를 자동으로 처리합니다. 그러나 미해결 대기 및 신호 펜스 값이 마지막 신호 펜스 값과는 UINT_MAX/2를 초과할 수 없다는 제한이 있습니다.
FALSE GPU가 CPU에서 볼 수 있는 것처럼 64비트 값을 원자성으로 업데이트할 수 있음을 나타냅니다.

Windows 10 시작 지원.

LowIrqlPreemptCommand

HwQueuePacketCap

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

NativeGpuFence

Reserved

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

Value

드라이버가 지원할 수 있는 GPU 예약 기능을 식별하는 32비트 값을 보유할 수 있는 DXGK_VIDSCHCAPS 포함된 공용 구조체의 멤버입니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista부터 사용할 수 있습니다.
헤더 d3dkmddi.h(D3dkmddi.h 포함)

참고 항목

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender