DirectCapture
O DirectCapture é um recurso da plataforma XBOX Game Streaming que minimiza automaticamente a latência do servidor para quadros compatíveis. A API XGameStreamingGetDisplayDetails permite consultar os requisitos de quadros compatíveis para que você possa garantir que seu jogo aproveite o DirectCapture. Os requisitos de um quadro compatível são explicados abaixo. O XBOX Game Streaming faz streaming de jogos capturando (copiando) os quadros apresentados e, em seguida, codificando esses quadros para streaming. Sem o DirectCapture, os quadros são convertidos dos parâmetros de apresentação de entrada para um formato de codificação usando o hardware de exibição. O quadro tem de 0 a 66 ms de latência em uma Fila de Apresentação e, em seguida, mais 8,3 ms de latência ao passar pelo Display Writeback (DWB) para a captura do quadro. O tempo na Fila de Apresentação depende de fatores como a taxa de quadros do jogo e o uso de buffer duplo ou triplo. O tempo de Display Writeback é fixo em 8,3 ms porque está vinculado a um relógio HDMI. No entanto, não há nenhuma tela HDMI conectada aos servidores do XBOX Game Streaming; por isso, o DirectCapture elimina esse tempo com uma implementação de software, em vez de usar o hardware de exibição. O DirectCapture captura quadros para codificação em cerca de 2 a 12 ms, eliminando etapas como a espera pelo VSync e a espera pela troca do buffer duplo ou triplo. Isso reduz a latência em até 72 ms. Para obter uma latência menor, um jogo deve fazer a apresentação com parâmetros compatíveis com o DirectCapture.- Modos de console com suporte
- Modo de Criação de Perfil Lockhart
- Resoluções de renderização de jogo com suporte
- Qualquer uma, incluindo a Resolução personalizada
- Formatos de cadeia de troca com suporte
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R9G9B9E5_SHAREDEXP
- Espaços de cores com suporte
- DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709
- Resolução de renderização do jogo: 3840x2160 para jogos XDK
- HDR
- Vários planos de apresentação
Validando se o seu título está fazendo streaming com o DirectCapture
Você pode validar se o seu título está sendo executado com o DirectCapture verificando os arquivos de log de streaming.Coletando arquivos de log
Para coletar os arquivos de log de streaming:- Comece a executar o jogo
- Inicie o streaming e conecte-se com um dos Aplicativos de Teste de Conteúdo (CTA)
- Jogue um trecho curto do seu jogo
- Encerre o jogo
- Desconecte o CTA
- Aguarde 30 segundos até que os logs terminem de ser gravados
- Copie os logs para um diretório local, como C:\temp
xbcp xt:\XStreamLogs\XStreamManagementService.etl c:\tempxbcp xt:\XStreamLogs\nanotrace.etl c:\temp
Exibindo mensagens de transição
- Abra XStreamManagementService.etl com o Windows Performance Analyzer
- Clique com o botão direito do mouse em System Activity no painel esquerdo e escolha “Add graph to Analysis View”
- No painel inferior, expanda Microsoft.Xbox.StreamManagementService
- Procure o provedor Microsoft.Xbox.HostStreamingAgent e expanda-o, se necessário. Se ele estiver ausente, repita as etapas de Coletando arquivos de log acima.
- Selecione a tarefa DirectCaptureLog e, se necessário, expanda o Unknown Process
- Role para a direita e procure as colunas chamadas 0_Message, 1_Message etc. Cada uma é uma mensagem do DirectCapture em sequência. Se houver várias linhas, elas são classificadas por tempo.
- Consulte a tabela abaixo para saber o significado de cada mensagem. Essas mensagens fornecerão a sequência de transições do DirectCapture, com os motivos de todos os casos em que o DirectCapture estiver desabilitado.
Informações detalhadas dos quadros
- Abra nanotrace.etl com o Windows Performance Analyzer
- Navegue até o provedor “Microsoft.Xbox.CloudStreaming” e selecione a tarefa “VideoFrameCaptureSourceChanged”; em seguida, expanda o processo “ApplicationClipService.exe” para ver todos os eventos “VideoFrameCaptureSourceChanged”.
- Verifique o campo “NewCaptureSource”
- Seu título está fazendo streaming com a latência menor do DirectCapture a partir do momento em que o valor é “DCap”
- Valores “DWB” significam que o DirectCapture não está sendo usado e que o mecanismo de captura padrão está em uso. Isso acontecerá quando:
- O título gerar um quadro incompatível com o DirectCapture
- O sistema renderizar uma sobreposição sobre o título (por exemplo, uma notificação do sistema)
Observações
- O nanotrace.etl tem histórico limitado; portanto, se você não vir “VideoFrameCaptureSourceChanged”, sua sessão pode ter sido longa demais. Para validar, execute uma sessão mais curta e verifique o ETL.
- O suporte ao DirectCapture em kits de desenvolvimento é limitado ao XBOX Series X Dev Kit
- Para obter mais informações, assista a XBOX Game Streaming: Reducing Latency and Optimizing for the Best Mobile Experiences.
