Skip to main content
L’ensemble d’API prenant en charge Sampler Feedback comprend les mêmes API sur XBOX et sur Direct3D 12 pour PC, avec des extensions XBOX pour toutes les fonctionnalités matérielles de XBOX Series X|S qui dépassent les capacités standard ou qui ne sont pas adoptées sur PC. En particulier, le filtre de carte MinMip personnalisé ne sera pas implémenté dans Direct3D 12 pour PC. L’ensemble d’API Sampler Feedback fournit les fonctionnalités suivantes.
  1. Créer une ressource de carte de feedback, avec une disposition de feedback MinMip ou MipRegionUsed.
  2. Créer un descripteur de vue d’accès non ordonné (UAV) pour une ressource de carte de feedback.
  3. Copier des données d’une ressource de carte de feedback vers un UAV standard (ou inversement), pour la relecture CPU/GPU des données de sampler feedback.
Les API d’extension XBOX fournissent les fonctionnalités suivantes.
  1. Créer un descripteur de vue de ressource de shader (SRV) pour une carte MinMip.
  2. Créer un descripteur d’échantillonneur pour le filtrage de carte MinMip.
  3. Créer un descripteur UAV pour une ressource de carte de feedback, à l’aide de paramètres de vue supplémentaires.
  4. Permettre la création de ressources de carte de feedback, et l’accès direct du CPU/GPU à ces ressources, sans utiliser les abstractions de format et de disposition des ressources de feedback de l’ensemble d’API standard.

Nouvelles méthodes ID3D12Device8 pour les ressources et les vues de carte de feedback

Avec l’API Direct3D 12 standard, les cartes de feedback sont créées à l’aide d’une abstraction. Les ressources ont des dimensions logiques et un type de carte de feedback connus du titre, mais les dimensions physiques et le format matériel ne sont connus que du pilote. Cette abstraction permet de prendre en charge divers encodages de cartes de feedback propres au matériel. Cependant, sur le GPU XBOX Series X|S, les cartes de feedback utilisent toujours le format R8_UINT en interne, et les dimensions physiques de la carte de feedback se calculent simplement en divisant les dimensions de la texture en mosaïque par les dimensions de la région de mip du sampler feedback.
CreateCommittedResource2 et CreatePlacedResource1 créent des ressources Direct3D 12 de manière similaire aux API existantes CreateCommittedResource et CreatePlacedResource, avec en plus la possibilité de créer des ressources de carte de feedback. Une structure D3D12_RESOURCE_DESC1 utilisée pour créer des ressources de carte de feedback doit spécifier DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE ou DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE pour le format, ainsi que D3D12_TEXTURE_LAYOUT_UNKNOWN pour la disposition. Les champs Width, Height, DepthOrArraySize et MipLevel doivent correspondre aux valeurs de la texture en mosaïque ciblée. Les dimensions de SamplerFeedbackMipRegion doivent chacune être une puissance de deux. Par exemple, pour créer une carte de feedback MinMip pour une texture BC1_UNORM de 4096 × 4096 avec mipmaps, en utilisant une région de mip de 512 × 256 (pour qu’un texel de feedback couvre une tuile de 64 Ko dans le mip 0), la description de ressource serait configurée ainsi.
La carte de feedback MinMip obtenue aurait des dimensions physiques de 8 × 16, avec un niveau de mip, le format R8_UINT et une disposition de texture D3D12XBOX_TEXTURE_LAYOUT_SWIZZLE_MODE_256B_S. GetResourceAllocationInfo2 renvoie la taille et l’alignement des ressources à partir des descriptions de ressources D3D12_RESOURCE_DESC1 fournies en entrée. Ces informations sont nécessaires pour créer des cartes de feedback placées sur un ID3D12Heap.
CreateSamplerFeedbackUnorderedAccessView et CreateSamplerFeedbackUnorderedAccessViewX créent un descripteur UAV pour le sampler feedback, à partir d’une ressource ciblée et d’une ressource de feedback. L’API d’extension accepte également une description d’UAV facultative pour prendre en charge les vues de sous-ressources d’une ressource de texture de feedback en tableau. Cette API garantit que les dimensions de la carte de feedback respectent les exigences matérielles de fraction en puissance de deux pour la collecte du sampler feedback sur la ressource ciblée.

Nouvelles méthodes d’extension ID3D12Device8 pour les vues et les échantillonneurs de carte MinMip

CreateMinMipShaderResourceViewX est une API d’extension XBOX qui crée une vue de ressource de shader de carte MinMip à partir d’une ressource ciblée (ou de sa description) combinée à une ressource MinMip. Comme pour la création d’un UAV de carte de feedback, cette API combine les attributs de la ressource ciblée (largeur, hauteur, niveaux de mip) avec ceux de la ressource de carte MinMip (largeur, hauteur, format) pour produire un descripteur de ressource liée. La ressource de carte MinMip doit présenter les caractéristiques suivantes :
  1. Des dimensions qui sont une fraction en puissance de deux des dimensions de la ressource ciblée
  2. Le format R8_UINT
  3. Un nombre de MipLevels égal à 1
Il est recommandé que les ressources de carte MinMip aient le mode swizzle D3D12XBOX_TEXTURE_LAYOUT_SWIZZLE_MODE_256B_S, car ces ressources sont censées être petites.
Pour créer un descripteur d’échantillonneur permettant d’échantillonner une carte MinMip, utilisez l’API d’extension XBOX existante ID3D12Device::CreateSamplerX en renseignant les nouveaux champs et indicateurs de la structure D3D12XBOX_SAMPLER_DESC. Les pentes et décalages du filtre peuvent être spécifiés à l’aide des valeurs des énumérations D3D12XBOX_MINMIP_FILTER_SLOPE et D3D12XBOX_MINMIP_FILTER_OFFSET.

Nouveau comportement de la méthode ID3D12GraphicsCommandList1::ResolveSubresourceRegion

La méthode ResolveSubresourceRegion a été améliorée pour copier des données vers ou depuis une ressource de feedback, avec une ressource de texture R8_UINT standard comme source ou destination, respectivement.

Nouveaux objets et méthodes HLSL (High-Level Shader Language)

Le modèle de shader HLSL 6.5 a introduit de nouveaux objets d’API pour les cartes de feedback : FeedbackTexture2D et FeedbackTexture2DArray. Il s’agit de ressources en écriture seule qui se lient aux registres UAV (u#) en HLSL. Ces nouveaux objets sont utilisables à toutes les étapes de shader, mais certaines méthodes sont réservées aux pixel shaders, de façon similaire aux restrictions existantes de certaines méthodes de Texture2D et Texture2DArray. Les méthodes de ces nouveaux objets incluent WriteSamplerFeedback*, WriteSamplerFeedbackBias*, WriteSamplerFeedbackLevelZero, WriteSamplerFeedbackGrad* et WriteSamplerFeedbackLevel. Le prototype de fonction d’une variante de FeedbackTexture2D::WriteSamplerFeedback ressemble à l’exemple de code suivant.
Le paramètre SampledTexture indique la texture pour laquelle générer le feedback. Si le paramètre SampledTexture ne correspond pas à la ressource utilisée lors de la création de l’UAV de feedback, le comportement est indéfini sur certaines plateformes. Sur le GPU XBOX Series X|S, le paramètre SampledTexture doit être présent, mais il est ignoré. Le descripteur UAV de ressource liée pour la carte de feedback contient toutes les informations nécessaires pour effectuer le sampler feedback.

Voir aussi

Conception matérielle du GPU pour Sampler Feedback Vue d’ensemble de Sampler Feedback (préversion)
Last modified on October 6, 2026