IddCx 버전 1.10 이상에 대한 업데이트

이 문서에서는 IddCx 버전 1.10에서 수행된 업데이트에 대해 설명합니다. IddCx 1.10에 대해 빌드된 단일 IDD(간접 표시 드라이버) 이진 파일은 런타임 검사를 사용하여 Windows 10 버전 1803 이상에서 실행하여 IddCx 1.10의 DDI 변경 내용을 해당 시스템에서 사용할 수 있는지 여부를 확인할 수 있습니다. 자세한 내용은 여러 버전의 Windows용 WDF 드라이버 빌드를 참조 하세요.

IddCx 1.10 변경 내용은 다음 범주로 분류됩니다.

  • IddCxGetVersion 버전(콘솔 및 원격)을 업데이트합니다. IddCx 관련 버전 정보의 전체 목록은 IddCx 버전을 참조하세요.
  • 간접 디스플레이에 HDR10(높은 동적 범위) 및 SDR(표준 동적 범위) WCG(Wide Color Gamut) 지원을 추가합니다.

IddCxGetVersion 버전 업데이트됨

IddCxGetVersion에서 반환된 값이 업데이트되었지만 OS에 따라 다릅니다.

  • Windows 11 버전 24H2 플랫폼 릴리스는 0x1A80(IDDCX_VERSION_GERMANIUM)를 반환합니다.
  • Windows 11 버전 22H2 9월 업데이트는 0x1A00(IDDCX_VERSION_SV3)를 반환합니다.

이 버전 관리 기능은 OS의 동작이 약간 다른 원격 드라이버에 중요합니다.

HDR 및 SDR 와이드 색 영역 지원

SDR WCG를 포함하여 Windows의 색에 대한 몇 가지 소개 정보는 HDR 및 SDR 디스플레이에서 고급 색이 있는 DirectX를 참조 하세요.

드라이버 DDI 및 OS 지원

가능한 경우 드라이버가 다음 지원을 보고할 수 있도록 기존 DDI가 확장되었습니다.

  • HDR10
  • SDR WCG
  • IDD로 전송된 HDR 프레임을 설명하는 데이터 수신

기존 DDI를 확장할 수 없는 경우 기존 DDI의 최신 변형이 추가되었습니다. 대부분의 경우 이러한 변경 내용은 콘솔 및 원격 드라이버 모두에 적용할 수 있지만 원격 드라이버와 관련된 몇 가지 세부 정보도 정의됩니다.

HDR을 지원하는 버전 1.10 이상 드라이버는 최신 DDI 변형을 사용해야 합니다. HDR을 지원하지 않는 이전 드라이버 또는 드라이버는 기존 함수를 계속 사용할 수 있습니다. 변경 내용에 대한 개요는 다음 섹션에 제공됩니다.

다음 표에서는 IddCx 1.10에 추가된 드라이버 구현 DDI를 나열하고 이전 DDCx가 있는 경우 이전과 동등한 이름을 지정합니다. 드라이버가 HDR을 지원하지 않는 어댑터의 경우에도 이러한 함수를 보고하는 경우 OS에서 이러한 함수를 호출할 수 있습니다.

OS에서 HDR 어댑터를 호출하는 드라이버 함수 이전의 동등한 함수
EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO 해당 없음
EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA* 해당 없음
EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION2** EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION
EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES2 EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES
EVT_IDD_CX_ADAPTER_COMMIT_MODES2 EVT_IDD_CX_ADAPTER_COMMIT_MODES

*: 원격 드라이버에 대해 함수가 호출되지 않습니다.

**: 드라이버에서 설정한 어댑터 플래그에 따라 원격 드라이버에 대해 함수를 호출하지 않을 수 있습니다.

다음 표에서는 IddCx 1.10에 추가된 OS 구현 함수를 나열하고 이전의 해당 함수 이름을 지정합니다. 버전 1.10 드라이버는 드라이버가 실행 중인 OS에서 이러한 함수를 사용할 수 있다고 판단되면 최신 변형을 호출할 수 있습니다.

드라이버가 HDR 어댑터를 호출해야 하는 최신 함수 이전의 해당 항목
IddCxSwapChainReleaseAndAcquireBuffer2 IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer
IddCxMonitorQueryHardwareCursor3 IddCxMonitorQueryHardwareCursor2 또는 IddCxMonitorQueryHardwareCursor
IddCxAdapterDisplayConfigUpdate2* IddCxAdapterDisplayConfigUpdate*
IddCxMonitorUpdateModes2 IddCxMonitorUpdateModes

*: 원격 드라이버에서만 사용합니다.

보고 어댑터 HDR 지원

버전 1.10 이상 드라이버는 FP16 화면에 대한 지원을 보고하도록 IDDCX_ADAPTER_FLAGS 추가된 IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 플래그를 설정 해야 합니다. FP16 표면은 HDR10 또는 SDR WCG에만 사용할 수 있습니다. 이 플래그를 설정하면 드라이버는 다음을 포함하여 HDR10 또는 SDR WCG를 사용하도록 설정하는 데 필요한 모든 작업을 수행합니다.

보고 대상 HDR 기능

드라이버가 어댑터에 대해 HDR을 사용하도록 설정하려는 경우 EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO 함수를 통해 각 대상 커넥터에 대한 추가 정보를 제공해야 합니다. 사용 가능한 대상 중 일부만 HDR의 일부 측면을 지원할 수 있으므로 대상 커넥터 관련 정보가 필요합니다.

HDR 메타데이터

드라이버가 HDR 메타데이터를 포함하는 모니터 설명자를 제공하는 경우 OS는 EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA 호출하여 드라이버에 기본 HDR 메타데이터를 제공합니다. 드라이버는 이 기본 데이터를 유지하고 HDR10 정보 프레임(SMPTE ST.2086)을 모니터에 보낼 때 사용해야 합니다. 드라이버가 IddCxSwapChainReleaseAndAcquireBuffer2를 호출하는 경우 OS는 HDR 메타데이터 정보도 제공합니다. 이 메타데이터가 기본값을 사용해야 한다고 나타내는 경우 저장된 기본 데이터를 참조합니다.

HDR 모드가 설정되면 OS는 모든 프레임에서 HDR 메타데이터 상태를 보냅니다. 이 메타데이터는 도입된 IDDCX_METADATA2 구조를 통해 사용할 HDR 메타데이터를 드라이버에 알려줍니다. 메타데이터는 새 메타데이터 블록이거나 드라이버가 OS에서 이전에 제공한 기본 메타데이터 또는 이전 프레임과 동일한 메타데이터를 사용해야 한다는 표시입니다.

참고: HDR10 메타데이터는 클라이언트의 디스플레이 하위 시스템에 제공되어야 하므로 원격 드라이버에서 HDR 메타데이터를 사용할 수 없습니다.

HDR 모드 보고

디스플레이가 대상에 연결되면 OS는 드라이버에 현재 지원되는 모니터 및 대상 모드를 쿼리합니다. HDR 기능을 올바르게 보급하려면 이러한 각 모드에 대한 추가 정보가 필요하므로 HDR 드라이버는 v1.10에 도입된 다음 DDI를 노출해야 합니다.

  • EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION2 IDDCX_MONITOR_MODE2 구조의 목록을 반환합니다.
  • EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES2 IDDCX_TARGET_MODE2 구조의 목록을 반환합니다.

이러한 확장 모드는 사용할 수 있는 가능한 비트 깊이 및 표면 형식을 나타냅니다. 또한 드라이버는 IddCxMonitorUpdateModes2를 호출 하여 대상 모드 목록을 업데이트할 수 있습니다.

OS는 모든 모드가 보고되기 전에 드라이버 의 EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO 콜백에서 반환된 정보에 따라 HDR 및 SDR WCG에 대한 모드 변형을 유추합니다.

OS는 단일 모드로 결합되고 보고되어야 하는 반복 모드를 검색하기 위해 모드의 유효성을 검사합니다. 예를 들어 채널당 8비트와 10비트 모두에서 60Hz에서 1080p를 지원하는 대상은 단일 모드로 보고되어야 합니다. 그러나 대상이 이러한 모드를 지원하지만 서로 다른 양의 대역폭이 필요한 경우 이러한 모드를 별도로 보고해도 괜찮습니다.

추가된 감마 유형

기존 EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP DDI는 OS가 HDR 지원을 보급하는 드라이버에 HDR 디스플레이를 지원하는 데 필요한 3x4 매트릭스 변환을 제공할 수 있도록 확장되었습니다.

SDR 흰색 수준

마우스 커서 픽셀 데이터는 항상 SDR입니다. 모니터가 HDR 모드로 설정되면 SDR 흰색 수준을 마우스 커서에 적용해야 합니다. IddCx v.10은 다음 두 위치에서 이 기능을 제공합니다.

  • IddCxSwapChainReleaseAndAcquireBuffer2를 호출할 때 드라이버가 받은 프레임당 메타데이터에 추가되었습니다.
  • 또한 드라이버가 새 프레임을 받을 필요 없이 올바른 흰색 수준에서 커서 업데이트를 렌더링할 수 있도록 도입된 IddCxMonitorQueryHardwareCursor3 함수의 일부이기도 합니다. 기본 SDR 흰색 수준은 80니트입니다.

표면 색 공간

드라이버가 모드 정보의 일부로 색 공간을 보고했지만 OS는 도입된 IDDCX_METADATA2 구조에서 특정 프레임에서 사용하는 실제 색 공간을 보고합니다.

원격 드라이버가 있는 HDR

가능한 경우 OS 및 드라이버 동작은 콘솔 드라이버와 같은 원격 드라이버에 대해 동일해야 합니다. 예외는 다음과 같습니다.

  • HDR 메타데이터는 원격 드라이버에 제공되지 않습니다. 클라이언트 시스템은 물리적으로 연결된 디스플레이를 기반으로 이 메타데이터를 제공해야 합니다. 서버에서 결정한 메타데이터를 사용하는 것은 의미가 없습니다.
  • 3x4 색 행렬 변환도 전송되지 않습니다. 다시 말하지만 원격 드라이버는 클라이언트 시스템의 해당 데이터를 사용해야 합니다.
  • 원격 드라이버는 서버에서 사용할 색 측정 데이터 및 SDR 흰색 수준을 제공할 수 있습니다.
  • 모니터 모드는 원격 드라이버에도 선택 사항입니다. 원격 드라이버가 IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE 어댑터 플래그를 설정하는 경우 OS는 모니터 모드를 요청하지 않고 대신 대상 모드만 사용합니다. 이 기능을 사용하면 드라이버가 동등한 모니터 모드를 보고할 필요 없이 비정상적인 모드를 지정할 수 있습니다. 예를 들어 모니터 크기가 아닌 클라이언트 창 크기를 기반으로 합니다.

아래로 실행 중인 1.10 드라이버 지원

이전 Windows 릴리스에서 실행되는 버전 1.10 드라이버는 호환성을 보장하기 위해 몇 가지 단계를 수행해야 합니다. 특히 드라이버는 다음을 수행해야 합니다.

  • EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION, EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES 및 EVT_IDD_CX_ADAPTER_COMMIT_MODES 같은 모든 기존 함수를 계속 내보냅니다.
  • IDD_CX_CLIENT_CONFIG_INIT 매크로를 사용하여 IDD_CX_CLIENT_CONFIG 구조체의 크기를 설정합니다.
  • 이전 릴리스에서 사용할 수 없는 OS 구현 함수를 호출하지 마세요. IDD_IS_FUNCTION_AVAILABLE 사용하여 가용성을 확인합니다.
  • v1.10 함수를 내보낼 수 없습니다. 드라이버는 IDD_IS_FIELD_AVAILABLE 매크로를 사용하여 IDD_CX_CLIENT_CONFIG 구조에 EvtIddCxXxx 콜백을 작성해야 하는지 여부를 확인할 수 있습니다.
  • 또한 IDD_IS_FIELD_AVAILABLE 드라이버가 IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 설정하거나 IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE 것이 안전한지 확인하는 데 도움이 될 수 있습니다. v1.10 DDI 중 하나를 사용할 수 없는 경우 드라이버는 플래그를 설정하면 안 됩니다.

IDD_IS_FIELD_AVAILABLE 사용하는 방법의 예:

    if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxParseMonitorDescription2))
    {
        IddCxClientConfig.EvtIddCxParseMonitorDescription2 = ParseMonitorDescription2;
    }

자세한 내용은 IddCx 1.4 드라이버 빌드를 참조 하세요.