Cofunctional VidPN 원본 및 대상 모드 열거

이 항목에서는 비디오 프레젠테이션 네트워크(VidPN) 관리자와 디스플레이 미니포트 드라이버가 공동 작업하여 비디오 현재 원본 및 대상에서 사용할 수 있는 모드를 열거하는 방법을 설명합니다. 이 자료를 읽기 전에 다음 항목의 자료를 잘 알고 있어야 합니다.

때때로 VidPN 관리자는 디스플레이 미니포트 드라이버에 디스플레이 어댑터의 비디오 프레젠테이션 원본 및 대상에서 사용할 수 있는 모드를 열거하도록 요청합니다. 일반적으로 요청에는 다음과 같은 패턴이 있습니다.

  1. VidPN 관리자는 원본 및 대상의 일부(전부는 아님)에 고정된 모드가 있는 VidPN을 만들거나 가져옵니다.

  2. VidPN 관리자는 DxgkDdiIsSupportedVidPn을 호출하여 VidPN을 확장하여 디스플레이 어댑터에서 지원되는 기능적인 VidPN을 형성할 수 있는지 여부를 확인합니다. 즉, 기존 고정 모드를 변경하지 않고 다시 기본 원본 및 대상에 모드를 고정할 수 있는지 여부를 묻습니다.

  3. VidPN 관리자는 DxgkDdiEnumVidPnCofuncModality를 호출하여 아직 고정된 모드가 없는 원본 및 대상에서 사용할 수 있는 모드를 가져옵니다.

DxgkDdiEnumVidPnCofuncModality에 전달된 인수 중 하나는 제약 VidPN이라는 VidPN 개체에 대한 핸들입니다.

DxgkDdiEnumVidPnCofuncModality 는 다음을 수행해야 합니다.

  • 제한된 VidPN을 검사합니다.

  • 고정 모드가 없는 각 원본 및 대상에 대해 제약 조건과 함께 작동하는 가능한 가장 큰 모드 집합이 되도록 모드 집합을 조정합니다.

  • 고정된 크기 조정 변환이 없는 각 경로에 대해 제약 조건과 함께 사용할 수 있도록 크기 조정 지원 플래그를 조정합니다.

  • 고정된 회전 변환이 없는 각 경로에 대해 제약 조건과 함께 활성화되도록 회전 지원 플래그를 조정합니다.

  • 고정 모드가 있는 각 원본에 대해 해당 원본에 사용할 수 있는 다중 샘플링 메서드를 보고합니다.

다음 단락은 이전 글머리 기호 목록의 각 작업을 수행하는 방법에 대한 세부 정보를 제공합니다.

제한된 VidPN 검사

제약 VidPN의 다음 속성은 DxgkDdiEnumVidPnCofuncModality에서 적용 해야 하는 제약 조건입니다.

  • 토폴로지(원본과 대상 간의 연결 집합)

  • 고정 모드

  • 각 경로의 크기 조정, 크기 조정 지원, 회전 및 회전 지원

  • 각 경로의 대상 색 기준

  • 각 경로의 대상 색 계수 동적 범위

  • 각 경로의 콘텐츠 형식(그래픽 또는 비디오)

  • 각 경로의 감마 램프

제약 조건 VidPN에서 제약 조건을 추출하려면 다음 단계를 수행합니다.

  • 먼저 pfnGetTopology 함수를 호출하여 제약 VidPN의 토폴로지를 나타내는 VidPN 토폴로지 인터페이스에 대한 포인터를 가져옵니다.

  • pfnAcquireFirstPathInfopfnAcquireNextPathInfo 함수를 호출하여 제약 VidPN 토폴로지의 각 경로에 대한 정보를 가져옵니다. 특정 경로(원본 ID, 대상 ID, 크기 조정 변환, 회전 변환, 대상 색 기준 등)에 대한 정보는 D3DKMDT_VIDPN_PRESENT_PATH 구조에 포함되어 있습니다.

  • 각 경로에 대해 경로의 원본 ID를 pfnAcquireSourceModeSet 함수에 전달하여 경로의 원본을 가져옵니다.

  • pfnAcquirePinnedModeInfo 함수를 호출하여 소스 모드 집합에 고정된 모드(있는 경우)를 결정합니다. 원본 모드 집합에 고정 모드가 있는 경우 집합에서 다시 기본 모드를 검사할 필요가 없습니다. 모드 집합에 고정된 모드가 없는 경우 pfnAcquireFirstModeInfo 및 pfnAcquireNextModeInfo를 호출하여 집합에서 다시 기본 모드를 검사합니다.

    비슷한 절차를 사용하여 대상 모드 집합을 검사하고 고정 모드가 있는 대상 모드 집합을 확인합니다.

모드 집합 조정

제약 VidPN의 토폴로지에서 원본 및 대상과 연결된 모드 집합을 검사할 때 고정 모드가 있는 모드 집합을 기록해 둡니다. 모드 집합에 고정된 모드가 없는 경우 모드를 조정해야 하는지 여부를 결정합니다. 제약 조건과 함께 작동하지 않는 모드가 포함되거나 제약 조건과 함께 작동하는 사용 가능한 모드가 없는 경우 모드 집합을 조정해야 합니다.

모니터가 연결된 비디오 프레젠테이션 대상의 경우 모니터에서 지원하는 모드 집합도 고려해야 합니다. 디스플레이 어댑터에 있는 비디오가 특정 모드(제약 조건이 지정된 경우)를 지원하는 경우에도 연결된 모니터가 모드를 지원하는 경우에만 대상 모드 집합에 해당 모드를 나열해야 합니다. 연결된 모니터에서 지원하는 모드를 확인하려면 다음 단계를 수행합니다.

크기 조정 지원 플래그 조정

제약 VidPN 토폴로지의 각 경로에 대해 경로에 고정된 크기 조정 변환이 있는지 확인합니다. 해당 결정을 내려면 vpnPath를 검사합니다.ContentTransformation.Scaling. 여기서 vpnPath는 경로를 나타내는 D3DKMDT_VIDPN_PRESENT_PATH 구조체입니다. vpnPath인 경우 ContentTransformation.Scaling은 D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_CENTERED 또는 D3DKMDT_VPPS_STRETCHED 설정된 다음 경로에 대한 크기 조정 변환이 고정됩니다. 그렇지 않으면 크기 조정 변환이 고정되지 않습니다.

경로에 고정된 크기 조정 변환이 없는 경우 경로의 크기 조정 지원 플래그를 조정해야 하는지 여부를 결정합니다. 제약 조건과 함께 작동하지 않는 크기 조정 형식에 대한 지원을 표시하거나 제약 조건과 함께 작동하는 크기 조정 형식에 대한 지원을 표시하지 못하는 경우 지원 플래그를 조정해야 합니다. 크기 조정 지원 플래그를 변경하려면 플래그를 보유하는 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT 구조체의 멤버를 설정합니다.

회전 지원 플래그 조정

경로의 회전 지원 플래그를 조정하는 것은 경로의 크기 조정 지원 플래그를 조정하는 것과 비슷합니다. vpnPath가 D3DKMDT_VIDPN_PRESENT_PATH 구조체라고 가정합니다. vpnPath인 경우 ContentTransformation.Rotation은 D3DKMDT_VPPR_IDENTITY, D3DKMDT_VPPR_ROTATE90, D3DKMDT_VPPR_ROTATE180 또는 D3DKMDT_VPPR_ROTATE270 설정된 다음 경로에 대한 회전 변환이 고정됩니다. 그렇지 않으면 회전 변환이 고정되지 않습니다. 회전 지원 플래그는 vpnPath있습니다.ContentTransformation.RotationSupport.

다중 샘플링 메서드 보고

디스플레이 어댑터에 다중 샘플링을 통해 앤티앨리어싱할 수 있는 비디오 출력 코덱이 하나 이상 있는 경우 고정 모드가 있는 각 소스에 대해 사용 가능한 다중 샘플링 메서드(제약 조건 제공)를 보고해야 합니다. 사용 가능한 다중 샘플링 메서드를 보고하려면 다음 단계를 수행합니다.

D3DDDI_MULTISAMPLINGMETHOD 구조체에는 다중 샘플링 메서드의 특징을 지정하는 두 멤버를 설정해야 합니다. NumSamples 멤버는 샘플링되는 하위 픽셀의 수를 나타냅니다. NumQualityLevels 멤버는 메서드가 작동할 수 있는 품질 수준 수를 나타냅니다. 각 수준의 증가가 제시된 이미지의 품질을 눈에 띄게 향상시키는 한 품질 수준을 지정할 수 있습니다.

열거형 피벗

앞에서 설명한 대로 DxgkDdiEnumVidPnCofuncModality는 hConstrainingVidPn 매개 변수에 전달된 VidPN과 함께 작동하는 모드 집합을 만들어야 합니다. 경우에 따라 DxgkDdiEnumVidPnCofuncModality는 EnumPivotTypeEnumPivot 매개 변수에 전달된 추가 정보(열거형 피벗)에 따라 동작을 보강해야 합니다.

열거형 피벗은 다음 중 하나일 수 있습니다.

  • 특정 비디오 현재 원본의 모드 집합

  • 특정 비디오 프레젠테이션 대상의 모드 집합

  • 특정 VidPN 현재 경로의 크기 조정 변환

  • 특정 VidPN 현재 경로의 회전 변환

열거형 피벗이 모드 집합 인 경우 DxgkDdkEnumVidPnCofuncModality 는 해당 모드를 변경되지 않은 상태로 유지해야 합니다. 열거형 피벗이 경로의 크기 조정(회전) 변환인 경우 DxgkDdiEnumVidPnCofuncModality 는 해당 경로에 대한 크기 조정(회전) 지원 플래그를 변경하지 않아야 합니다.