Skip to main content
Récupère un ensemble de statistiques pour une image.

Syntaxe

Paramètres

Token   _In_
Type : D3D12XBOX_FRAME_PIPELINE_TOKEN
Jeton de pipeline qui identifie l’image visée. TypeSet   _In_ Type : D3D12XBOX_FRAME_STATISTICS_TYPE Combinaison d’indicateurs de type qui identifient les statistiques à récupérer. pCount   _Inout_ Type : UINT* Pointeur vers une valeur qui spécifie la taille, en entrées, de la liste pStatistics. Au retour, la valeur est mise à jour pour contenir le nombre d’entrées écrites dans la liste. pStatistics   _Out_
Type : D3D12XBOX_FRAME_STATISTICS*
Pointeur vers le premier élément d’un tableau de statistiques d’image. Au retour, les statistiques interrogées des types spécifiés seront écrites dans le tableau.

Valeur de retour

Type : HRESULT Code de réussite ou d’erreur HRESULT. Retourne S_OK si un ou plusieurs ensembles de statistiques des types demandés sont disponibles (et retournés, selon l’espace disponible dans la liste). Retourne S_FALSE si aucune des statistiques demandées n’est encore disponible. Retourne E_INVALIDARG pour les jetons de pipeline d’image inconnus, les ensembles de types non valides et les dispositions de liste non valides.

Remarques

Bien que les statistiques puissent être interrogées pour tout jeton de pipeline d’image valide, le runtime conserve actuellement un historique limité aux 17 dernières images. Toute image dont l’origine remonte à plus de 17 intervalles dans le passé n’aura aucune statistique disponible, et les statistiques interrogées pour celle-ci retourneront S_FALSE. Les types demandés ne retourneront également aucune statistique si les événements d’image qui leur sont associés ne se sont pas encore produits et que les statistiques ne sont donc pas disponibles. (Un exemple d’événement d’image associé est une requête qui inclut la spécification de D3D12XBOX_FRAME_STATISTICS_TYPE_DISPLAY avant que l’image ait réellement été basculée vers l’affichage.) Une requête de statistiques peut retourner plus d’une entrée par type inclus dans l’ensemble demandé. Voici des exemples de statistiques multiples :
  • PRESENT, RENDER et DISPLAY lorsqu’une image apparaît sur plusieurs plans d’affichage
  • FRAME_EVENT DISPLAY_VBLANK lorsque plusieurs événements VBlank se produisent au cours de l’image
  • INPUT lorsque plusieurs requêtes d’entrée sont effectuées pour le compte de l’image
Le tableau de statistiques fourni à GetFrameStatisticsX doit être dimensionné en conséquence. Bien que la méthode puisse être utilisée pour interroger le nombre de statistiques disponibles, la taille peut changer lors d’un appel ultérieur à mesure que des événements d’image se terminent et que des statistiques supplémentaires sont produites. Toutes les statistiques d’image qui font référence au temps sont fournies sous forme d’horodatages CPU (c’est-à-dire QueryPerformanceCounter), même pour les actions effectuées par le GPU. Cela permet de préserver une expression uniforme du temps dans les statistiques et, étant donné que plusieurs types de files d’attente peuvent maintenir des horloges indépendantes, de demeurer indépendant de l’exécution des files d’attente de commandes. Vous pouvez utiliser GetClockCalibration pour effectuer des conversions basées sur les files d’attente des horodatages CPU signalés en horodatages GPU équivalents. Pour suivre la latence du pipeline depuis l’origine de l’image jusqu’à l’affichage, une application interroge les statistiques en continu. Les résultats servent de mécanisme de rétroaction pour informer le titre des mises à jour apportées à l’heure de début d’image planifiée par les appels à ScheduleFrameEventX. L’objectif est de planifier l’heure d’origine de manière à ce que l’image termine son rendu et soit présentée le plus près possible de son basculement à l’affichage. Idéalement, aucun temps ne devrait être perdu entre les images.
  1. L’origine et la requête d’entrée de la manette pour l’image : FRAME_EVENT_STATISTICS::SignalTime et INPUT_STATISTICS::QueryTime
  2. L’écriture finale dans les ressources d’échange de l’image et l’appel pour les présenter : RENDER_STATISTICS::FrameCompleteTime et PRESENT_STATISTICS::PresentCallTime
  3. L’appel PresentX et le basculement des ressources vers l’affichage : PRESENT_STATISTICS::PresentCallTime et DISPLAY_STATISTICS::FlipTime
Le seul délai du pipeline devrait être une marge définie par l’application entre l’appel à PresentX et le basculement, afin de se protéger contre les pics de durée d’image, ce qui atténuerait le risque de manquer le VBlank cible.

Configuration requise

En-tête : d3d12_x.h Bibliothèque : d3d12_x.lib Plateformes prises en charge : famille XBOX One
Last modified on October 6, 2026