Skip to main content
Présente un ensemble de ressources pour l’affichage.

Syntaxe

Paramètres

PlaneCount   _In_range_(1, D3D12XBOX_PRESENT_PLANES_MAX) Type : UINT Nombre de plans à présenter. Plusieurs plans peuvent se composer d’un plan d’arrière-plan avec des superpositions et/ou de paires de compositions standard et HDR (High Dynamic Range) de la frame. Utilisez un nombre de plans égal à 0 pour basculer l’affichage vers null, ce qui définit la couleur de l’affichage sur noir. XBOX Series X|S permet le mélange de plans supérieurs à 1920 x 1080, qui peuvent tous deux être HDR (High Dynamic Range). pPlaneParameters   _In_reads_(PlaneCount) Type : const D3D12XBOX_PRESENT_PLANE_PARAMETERS* Pointeur vers le premier élément d’un tableau de paramètres utilisés pour contrôler la présentation de chaque plan fourni. Organisez le tableau selon l’ordre Z : de l’arrière vers l’avant. Définissez les éléments par proximité, puis par paires d’espaces de couleurs (HDR-SDR). pPresentParameters   _In_opt_ Type : const D3D12XBOX_PRESENT_PARAMETERS* Facultatif. Pointeur vers un ensemble de paramètres utilisés pour contrôler la présentation.

Valeur renvoyée

Type : HRESULT Code de réussite ou d’erreur HRESULT. Renvoie S_OK si les ressources d’échange spécifiées ont été correctement mises en file d’attente pour la présentation. Renvoie ERROR_WAS_STILL_DRAWING si D3D12XBOX_PRESENT_FLAG_DO_NOT_WAIT est spécifié et qu’une ou plusieurs des ressources ppResources spécifiées de pPlaneParameters sont actuellement affichées ou en file d’attente pour la présentation. Renvoie E_INVALIDARG en cas de paramètres non valides ou de composition non valide de la présentation. Renvoie D3DERR_DEVICEREMOVED si le GPU cesse de répondre avant l’appel à PresentX

Remarques

Les ressources incluses dans les tableaux ppResources contenus dans pPlaneParameters remplacent les anciennes chaînes d’échange (swap chains) et doivent être créées avec la prise en charge du basculement (flip) vers un affichage. Pour activer la prise en charge du basculement, appelez CreateCommittedResource et définissez l’indicateur D3D12_HEAP_FLAG_ALLOW_DISPLAY (D3D12_HEAP_FLAGS) dans le paramètre pDesc. Les ressources créées sans tas sous-jacent ne sont pas encore autorisées. Les chaînes d’échange ont évolué vers une collection de ressources affichables gérée par l’utilisateur ; toutefois, en raison des limitations du TLB, seul un nombre limité de ressources de ce type peut être instancié à la fois. Une ressource affichable ne peut pas être libérée jusqu’à sa désallocation si elle est actuellement balayée (scan-out) par un affichage ou en file d’attente pour la présentation. Vous devez d’abord basculer l’affichage vers un autre ensemble de ressources ou vers null (si l’application est arrêtée). Pour effectuer une présentation null, appelez PresentX(0, nullptr, nullptr);. Avec ppResources remplaçant les chaînes d’échange, l’espace de couleurs d’une ressource d’échange est désormais déclaré dans les paramètres de plan inclus dans pPlaneParameters, et le mappage de tons automatique pour GameDVR est sélectionné pour une ressource via l’indicateur de création de ressource D3D12XBOX_RESOURCE_FLAG_ALLOW_AUTOMATIC_GAMEDVR_TONE_MAP, ce qui entraîne un stockage de tas supplémentaire et un coût GPU par Present. XBOX Series X|S ajoute deux formats de ressources d’échange supplémentaires, DXGI_FORMAT_R9G9B9E5_SHAREDEXP et DXGI_FORMAT_A8_UNORM. Une ressource d’échange DXGI_FORMAT_A8_UNORM doit toujours être associée à une ressource d’échange DXGI_FORMAT_R9G9B9E5_SHAREDEXP. Elle sert de canal alpha pour la ressource RGBE lorsqu’un canal alpha est souhaité (par exemple, lors du mélange de plusieurs plans). XBOX Series X|S permet également la compression DCC (Delta Color Compression) des ressources d’échange via l’indicateur de création de ressource D3D12XBOX_RESOURCE_FLAG_ALLOW_DCC. Les ressources peuvent ne pas être présentées si l’identification des frames utilisées pour leur production, ou au moins pour le lancement de leur construction, n’est pas fournie. Cela est nécessaire pour corréler les statistiques de présentation aux frames individuelles, pour mesurer la latence du pipeline de frame complet depuis l’origine et pour l’échantillonnage des entrées jusqu’à l’affichage. L’identification s’effectue via le membre Token des paramètres pPlaneParameters, où différentes valeurs D3D12XBOX_FRAME_PIPELINE_TOKEN peuvent être spécifiées pour chaque plan de composition (arrière-plan et superposition), étant donné que les fréquences de présentation des plans peuvent différer et donc que les frames de base peuvent être différentes. Le jeton de pipeline doit être inclus de manière redondante pour les plans qui proviennent tous de la même frame. Les frames et leurs ressources d’échange associées doivent être présentées dans l’ordre dans lequel elles ont été produites. Un flux de jetons de pipeline de frames provenant de WaitFrameEventX se termine par PresentX, sans qu’aucune perte de frame ni aucun réordonnancement ne soit autorisé. Le contenu d’un plan de composition peut être conservé à l’affichage pendant qu’un ou plusieurs autres plans sont mis à jour ; pour ce faire, transmettez la même ressource et le même jeton de frame que ceux fournis pour le plan lors de l’appel précédent à PresentX. Pour supprimer un plan de composition établi au cours d’une série d’appels à PresentX, omettez les ressources et les jetons du plan dans le tableau pointé par pPlaneParameters lors d’un appel ultérieur à PresentX. Les ressources d’échange présentées sont basculées vers l’affichage au moment de leur VBlank planifié ; cela suppose que l’appel à PresentX est effectué et traité dans le seuil de la cible déclarée dans ImmediateThresholdPercent de pPresentParameters. Si PresentX manque le VBlank mais arrive dans le seuil, la ressource est immédiatement basculée vers l’affichage. Ce seuil est basé sur un pourcentage du temps de balayage de l’affichage (de VBlank à VBlank), et non sur un pourcentage de l’intervalle de frame défini. En outre, contrairement à la présentation immédiate, configurée à l’aide de l’indicateur D3D12XBOX_PRESENT_FLAG_IMMEDIATE dans pPresentParameters (qui déclenche immédiatement l’origine de la frame suivante), les basculements immédiats basés sur le seuil ne signalent l’origine de la frame suivante que si l’heure de cette origine est déjà passée.

Configuration requise

En-tête : d3d12_x.h Bibliothèque : d3d12_x.lib Plateformes prises en charge : famille XBOX One

Voir aussi

ID3D12CommandQueue
Last modified on October 6, 2026