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

Syntaxe

Paramètres

Token   _In_
Type : D3D12XBOX_FRAME_PIPELINE_TOKEN
Jeton de pipeline qui identifie la trame concerné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 nombre d’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 de trame. Au retour, les statistiques interrogées des types spécifiés sont é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, dans la limite de l’espace de la liste). Retourne S_FALSE si aucune des statistiques demandées n’est encore disponible. Retourne E_INVALIDARG en cas de jetons de pipeline de trame inconnus, d’ensembles de types non valides et d’agencements de liste non valides.

Remarques

Bien que les statistiques puissent être interrogées pour n’importe quel jeton de pipeline de trame valide, le runtime conserve actuellement un historique limité aux 17 dernières trames. Toute trame dont l’origine remonte à plus de 17 intervalles n’aura aucune statistique disponible, et les statistiques interrogées pour celle-ci retourneront S_FALSE. Les types demandés ne retournent également aucune statistique si leurs événements de trame associés ne se sont pas encore produits et que les statistiques ne sont donc pas disponibles. (Un exemple d’événement de trame associé est une requête qui inclut la spécification de D3D12XBOX_FRAME_STATISTICS_TYPE_DISPLAY avant que la trame n’ait été effectivement basculée vers l’affichage.) Une requête de statistiques peut retourner plusieurs entrées par type inclus dans l’ensemble demandé. Voici quelques exemples de statistiques multiples :
  • PRESENT, RENDER et DISPLAY lorsqu’une trame apparaît sur plusieurs plans d’affichage
  • FRAME_EVENT DISPLAY_VBLANK lorsque plusieurs événements VBlank se produisent au cours de la trame
  • INPUT lorsque plusieurs requêtes d’entrée sont effectuées pour le compte de la trame
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 de trame se terminent et que des statistiques supplémentaires sont produites. Toutes les statistiques de trame qui font référence au temps sont fournies sous la forme d’horodatages CPU (c’est-à-dire QueryPerformanceCounter), même pour les actions effectuées par le GPU. Cela permet de conserver une expression uniforme du temps dans les statistiques et, étant donné que plusieurs types de files d’attente peuvent gérer des horloges indépendantes, de rester 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 la trame 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 de l’heure de début de trame planifiée effectuées par les appels à ScheduleFrameEventX. L’objectif est de planifier l’heure d’origine de manière à ce que la trame termine son rendu et soit présentée aussi près que possible de son basculement à l’affichage. Idéalement, aucun temps ne doit être perdu entre les trames.
  1. L’origine et la requête d’entrée de manette pour la trame : FRAME_EVENT_STATISTICS::SignalTime et INPUT_STATISTICS::QueryTime
  2. L’écriture finale dans les ressources d’échange de la trame 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 doit être une marge définie par l’application entre l’appel à PresentX et le basculement, afin de se prémunir contre les pics de durée de trame, ce qui atténue 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