IddCx 버전 1.5, 1.6 이상에 대한 업데이트

IddCx 버전 1.5 및 1.6의 다음 업데이트는 콘솔 및 IDD(원격 간접 디스플레이 드라이버)에 모두 적용됩니다.

IddCxGetVersion 버전 업데이트됨

IddCxGetVersion에서 반환된 IddCx 버전은 버전 1.5의 경우 0x1500, 버전 1.6의 경우 0x1600 업데이트되었습니다. IddCx 관련 버전 정보의 전체 목록은 IddCx 버전을 참조하세요.

공용 IddCx 기호의 WPP 정보

IddCx 버전 1.5부터 공용 IddCx 기호 파일에는 모든 Windows WPP(소프트웨어 추적 프로세서) 정보가 포함됩니다. 이 변경은 !wmitrace.logdump 디버거 명령이 디코딩하고 커널 디버거에 WPP 메시지를 표시한다는 것을 의미합니다.

시스템 메모리에 할당된 버퍼에 액세스하는 기능

특정 시나리오에서 스왑 체인 버퍼는 시스템 메모리에 상주합니다. 예를 들어 WARP(Windows Advanced Rasterization Platform, 시스템 제공 소프트웨어 렌더러)가 사용 중인 렌더링 어댑터인 경우입니다. IddCx 1.5는 드라이버가 시스템 메모리의 버퍼에 액세스하여 하위 리소스 복사본을 방지할 수 있도록 하는 다음 OS 콜백을 추가합니다.

  • IddCxSwapChainInSystemMemory 를 사용하면 IDD에서 스왑 체인의 버퍼가 시스템 메모리에 상주하는지 여부를 확인할 수 있습니다. 이 콜백의 결과는 스왑 체인의 수명 동안 일정하게 유지됩니다. 드라이버는 EvtIddCxMonitorAssignSwapChain 콜백에서이 콜백의 값을 확인하고 버퍼를 해제하고 획득하도록 상태를 설정해야 합니다.

  • IddCxSwapChainReleaseAndAcquireSystemBuffer 를 사용하면 IDD가 버퍼를 해제하고 획득할 수 있으며 버퍼에 액세스하기 위한 정보(예: 시스템 메모리 포인터, 버퍼의 피치/스트라이드, 표면 형식 및 차원)를 가져올 수 있습니다. 반환된 버퍼는 다음에 이 함수를 성공적으로 호출할 때까지 유효합니다.

    새 스왑 체인을 할당할 때 드라이버는 특정 스왑 체인을 호출할 IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer의 변형을 결정해야 하며 해당 스왑 체인의 남은 수명 동안 해당 변형을 계속 사용해야 합니다. 결정하려면 드라이버는 특정 요구 사항 및 IddCxSwapChainInSystemMemory 호출의 결과를 고려해야 합니다. 드라이버로 인해 운영 체제가 UMDF 프로세스를 버그로 확인합니다( 다음 경우).

    • IddCxSwapChainReleaseAndAcquireSystemBuffer IddCxSwapChainReleaseAndAcquireBuffer의 다른 변형을 호출합니다./
    • IddCxSwapChainInSystemMemory가 false를 반환하면 IddCxSwapChainReleaseAndAcquireSystemBuffer 를 호출합니다.

드라이버는 권장되지만 이러한 콜백 함수를 사용할 필요는 없습니다. IddCx 1.5 이전의 동작은 계속 지원됩니다.

물리적으로 연속된 메모리의 버퍼에 액세스하는 기능

참고 항목

IddCxSwapChainGetPhysicallyContiguousAddress 는 Windows 10 시스템에서 지원되지 않으며 나중에 더 이상 사용되지 않을 수 있습니다.

IddCx 1.6부터 IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS 플래그와 IddCxSwapChainGetPhysicallyContiguousAddressAddress OS 콜백 함수가 추가되어 버퍼가 물리적으로 인접한 메모리에서 액세스할 수 있습니다.

디스플레이 드라이버는 IDDCX_ADAPTER_CAPS IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS 플래그를 설정하여 주 표면을 물리적으로 연속된 시스템 메모리에 할당할 것을 요청할 수 있습니다. 이 기능을 사용하면 드라이버가 중간 복사본 없이 표면을 직접 검색할 수 있습니다.

초기화 중에 드라이버의 요청이 성공하도록 보장되지는 않습니다. 요청이 성공하지 않으면 IddCxAdapterInitAsync에 대한 호출이 실패하지 않습니다. 대신 드라이버가 IddCxSwapChainReleaseAndAcquireBuffer(또는 IddCxSwapChainReleaseAndAcquireSystemBuffer)를 수행하면 IddCxSwapChainGetPhysicallyContiguousAddress를 호출하여 표면의 실제 주소를 검색해야 합니다. IddCxSwapChainGetPhysicallyContiguousAddress 는 먼저 보류 중인 렌더링 명령을 기다린 다음 표면이 저장된 주소 범위와 연결된 CPU 캐시를 플러시하고 무효화합니다. 그러나 물리적으로 연속된 메모리에 할당할 표면에 대한 초기 요청이 실패한 경우 IddCxSwapChainGetPhysicallyContiguousAddress 는 E_NOINTERFACE 반환합니다.