DirectCapture 개요

DirectCapture

DirectCapture는 호환되는 프레임에 대한 서버 대기 시간을 자동으로 최소화하는 Xbox 게임 스트리밍 플랫폼 기능입니다. XGameStreamingGetDisplayDetails API를 사용하면 호환되는 프레임 요구 사항을 쿼리하여 게임이 DirectCapture를 활용할 수 있도록 할 수 있습니다. 호환되는 프레임에 대한 요구 사항은 아래에 설명되어 있습니다.

Xbox 게임 스트리밍은 제공된 프레임을 캡처(복사)한 다음 스트리밍을 위해 프레임을 인코딩하여 게임을 스트리밍합니다. DirectCapture가 없으면 프레임이 입력 프레젠테이션 매개 변수에서 디스플레이 하드웨어를 사용하는 인코딩 형식으로 변환됩니다. 프레임은 현재 큐에서 0~66ms의 대기 시간을 가지며 프레임을 캡처하기 위해 DWB(디스플레이 쓰기 저장)를 거치면서 프레임의 대기 시간이 8.3ms 더 짧습니다. 프레젠테이션 큐의 시간은 게임의 프레임 속도 및 이중 버퍼링 또는 삼중 버퍼링 사용 여부에 따라 달라집니다. 8.3ms 디스플레이 쓰기 저장 시간은 HDMI 시계에 연결되어 있으므로 8.3ms로 고정됩니다.

하지만 Xbox 게임 스트리밍 서버에 연결된 HDMI 디스플레이가 없으므로 DirectCapture는 이번에는 디스플레이 하드웨어를 사용하는 대신 소프트웨어 구현으로 단락합니다. DirectCapture는 VSync 대기 및 이중 버퍼링 또는 삼중 버퍼링 대칭 이동 대기와 같은 항목을 제거하여 약 2-12ms의 인코딩 프레임을 캡처합니다. 이렇게 하면 대기 시간이 최대 72ms까지 줄어듭니다.

대기 시간을 낮추려면 게임에 DirectCapture와 호환되는 매개 변수가 있어야 합니다.

  • 지원되는 콘솔 모드
    • Lockhart 프로파일링 모드
  • 지원되는 게임 렌더링 해상도
  • 지원되는 스왑 체인 형식
    • DXGI_FORMAT_R8G8B8A8_UNORM
    • DXGI_FORMAT_B8G8R8A8_UNORM
    • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
    • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
    • DXGI_FORMAT_R10G10B10A2_UNORM
  • 지원되는 색 공간
    • DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709

위에 나열되지 않은 프레젠테이션 매개 변수는 현재 DirectCapture에서 지원되지 않습니다. 예를 들어 다음이 지원되지 않습니다.

  • 게임 렌더링 해상도: 3840x2160
  • HDR
  • 여러 프레젠테이션 평면
  • 다른 원본 및 대상 사각형을 사용하여 크기 조정

XGameStreamingGetDisplayDetails를 사용하여 DirectCapture와 호환될 항목을 결정할 수 있으며 PIX 지원은 향후 릴리스될 예정입니다.

DirectCapture를 사용하여 타이틀이 스트리밍되고 있는지 확인

스트리밍 로그 파일을 확인하여 타이틀이 DirectCapture에서 실행 중인지 확인할 수 있습니다.

로그 파일을 수집하는 중

스트리밍 로그 파일을 수집하려면 다음을 수행합니다.

  1. 게임 실행 시작
  2. 스트리밍을 시작하고 CTA(콘텐츠 테스트 앱) 중 하나로 연결
  3. 게임의 짧은 섹션 재생
  4. 게임 종료
  5. CTA 연결 끊기
  6. 로그 쓰기가 완료되기까지 30초 정도 기다립니다.
  7. C:\temp와 같은 로컬 디렉터리에 로그 복사
    1. xbcp xt:\XStreamLogs\XStreamManagementService.etl c:\temp
    2. xbcp xt:\XStreamLogs\nanotrace.etl c:\temp

전환 메시지 보기

  1. Windows Performance Analyzer를 사용하여 XStreamManagementService.etl 열기
  2. 왼쪽 창에서 시스템 작업을 마우스 오른쪽 단추로 클릭하고 "분석 보기에 그래프 추가"를 선택합니다.
  3. 아래쪽 창에서 Microsoft.Xbox.StreamManagementService를 확장합니다.
  4. Microsoft.Xbox.HostStreamingAgent 공급자를 찾아 필요한 경우 확장합니다. 누락된 경우 위의 로그 파일 수집 단계를 반복합니다.
  5. DirectCaptureLog 작업을 선택하고 필요한 경우 알 수 없는 프로세스를 확장합니다.
  6. 오른쪽으로 스크롤하여 0_Message, 1_Message 등의 열을 찾습니다. 각각은 순서대로 DirectCapture의 메시지입니다. 행이 여러 개 있는 경우 시간별로 정렬됩니다.
  7. 각 메시지의 의미는 아래 표를 참조하세요. 이러한 메시지는 DirectCapture를 사용하지 않도록 설정된 경우의 이유로 DirectCapture 전환 시퀀스를 제공합니다.
메시지 ID 메시지
1 DirectCapture로 전환
2 DWB로 전환(DirectCapture를 사용할 수 없음)
3 지원되지 않는 렌더링 평면 구성입니다. 이는 게임 내 렌더링 평면 또는 시스템이 타이틀 위에 오버레이를 렌더링하기 때문일 수 있습니다(예: 시스템 알림).
4 지원되지 않는 픽셀 형식입니다. 당시 게임의 픽셀 형식에 대한 연결된 PixelFormat을 참조하세요.
5 지원되지 않는 타일 모드입니다. 당시 게임의 타일 모드에 대해 연결된 TileMode를 참조하세요.
6 지원되지 않는 게임 해상도입니다. 관련 GameResolutionWidth 및 GameResolutionHeight를 참조하여 당시 게임이 렌더링한 해상도를 확인하세요.
8 게임 이외의 프레임이 화면에 표시됨
12 DirectCapture를 사용할 수 없음(지원되지 않는 콘솔 모드로 인해 발생할 수 있음)
18 지원되지 않는 원본 사각형 크기
19 지원되지 않는 Present 매개 변수 플래그
21 지원되지 않는 대상 사각형 크기

자세한 프레임 정보

  1. Windows Performance Analyzer로 nanotrace.etl 열기
  2. "Microsoft.Xbox.CloudStreaming" 공급자로 이동하여 "VideoFrameCaptureSourceChanged" 작업을 선택한 다음 프로세스 "ApplicationClipService.exe"를 확장하여 모든 "VideoFrameCaptureSourceChanged" 이벤트를 확인합니다.
  3. "NewCaptureSource" 필드 확인
    • 값이 "DCap"인 경우부터 DirectCapture의 짧은 대기 시간으로 타이틀이 스트리밍됩니다.
    • "DWB" 값은 DirectCapture가 사용되지 않고 기본 캡처 메커니즘이 사용됨을 의미합니다. 다음과 같은 경우에 발생합니다.
      • 타이틀은 DirectCapture와 호환되지 않는 프레임을 출력합니다.
      • 시스템은 타이틀 위에 오버레이를 렌더링합니다(예: 시스템 알림).

참고

참고 항목

사용자 지정 해상도 개요