Passer au contenu principal
Décrit une ressource, telle qu’une texture. Cette structure est très largement utilisée.

Syntaxe

Membres

Dimension
Type : D3D12_RESOURCE_DIMENSION
Un membre de D3D12_RESOURCE_DIMENSION, qui spécifie les dimensions de la ressource (par exemple, D3D12_RESOURCE_DIMENSION_TEXTURE1D), ou s’il s’agit d’une mémoire tampon ((D3D12_RESOURCE_DIMENSION_BUFFER). Alignment
Type : UINT64
Spécifie l’alignement en octets. Width
Type : UINT64
Spécifie la largeur de la ressource. Height
Type : UINT
Spécifie la hauteur de la ressource. DepthOrArraySize
Type : UINT16
Spécifie la profondeur de la ressource, si elle est 3D, ou la taille du tableau s’il s’agit d’un tableau de ressources 1D ou 2D. MipLevels
Type : UINT16
Spécifie le nombre de niveaux de MIP. Format
Type : DXGI_FORMAT
Spécifie un membre de DXGI_FORMAT. SampleDesc
Type : DXGI_SAMPLE_DESC
Spécifie une structure DXGI_SAMPLE_DESC. Layout
Type : D3D12_TEXTURE_LAYOUT
Spécifie un membre de D3D12_TEXTURE_LAYOUT. Flags
Type : D3D12_RESOURCE_FLAGS
Indicateurs combinés par un OR au niveau du bit, sous forme de constantes d’énumération D3D12_RESOURCE_FLAGS. SamplerFeedbackMipRegion
Type : D3D12_MIP_REGION
Pour une ressource de retour d’échantillonneur, décrit la taille, dans la ressource suivie, représentée par un texel de retour.

Remarques

Utilisez cette structure avec :
  • ID3D12Resource::GetDesc
  • ID3D12Device::GetResourceAllocationInfo
  • ID3D12Device::CreateCommittedResource
  • ID3D12Device::CreatePlacedResource
  • ID3D12Device::CreateReservedResource
  • ID3D12Device::GetCopyableFootprints
Pour un certain nombre de fonctions d’assistance, reportez-vous à Structures et fonctions d’assistance pour D3D12. Deux ressources courantes sont les mémoires tampons et les textures, qui utilisent toutes deux cette structure, mais avec des utilisations très différentes des champs.

Mémoires tampons

Les mémoires tampons sont une région de mémoire contiguë. Width peut être comprise entre 1 et soit le champ MaxGPUVirtualAddressBitsPerResource de D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT pour les ressources réservées, soit le champ MaxGPUVirtualAddressBitsPerProcess pour les ressources validées. Toutefois, l’épuisement de l’espace d’adressage virtuel du GPU, du budget de résidence en mémoire (consultez IDXGIAdapter3::QueryVideoMemoryInfo) et/ou de la mémoire système peut facilement survenir avant. Alignment doit être de 64 Ko (D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) ou 0, ce qui équivaut en pratique à 64 Ko. Height, DepthOrArraySize et MipLevels doivent être égaux à 1. Format doit être DXGI_FORMAT_UNKNOWN. SampleDesc.Count doit être égal à 1 et Quality doit être égal à 0. Layout doit être D3D12_TEXTURE_LAYOUT_ROW_MAJOR, car les dispositions de mémoire des mémoires tampons sont comprises par les applications et les données de texture en ordre ligne par ligne sont couramment transférées par le biais de mémoires tampons. Flags doit tout de même être renseigné avec précision par les applications pour les mémoires tampons, à quelques exceptions près. Toutefois, les applications peuvent utiliser le maximum de fonctionnalités prises en charge sans se soucier de l’impact sur l’efficacité des mémoires tampons. Le champ Flags est destiné à contrôler les propriétés liées aux textures.

Textures

Les textures sont un arrangement multidimensionnel de texels dans une région de mémoire contiguë, fortement optimisé pour maximiser la bande passante pour le rendu et l’échantillonnage. Les tailles de texture sont difficiles à prévoir et varient d’un adaptateur à l’autre. Les applications doivent utiliser ID3D12Device::GetResourceAllocationInfo pour connaître précisément leur taille. TEXTURE1D, TEXTURE2D et TEXTURE3D ne sont pas pris en charge de façon orthogonale sur tous les formats. Consultez l’utilisation de D3D12_FORMAT_SUPPORT1_TEXTURE1D, D3D12_FORMAT_SUPPORT1_TEXTURE2D et D3D12_FORMAT_SUPPORT1_TEXTURE3D dans D3D12_FORMAT_SUPPORT1. Width, Height et DepthOrArraySize doivent être compris entre 1 et la dimension maximale prise en charge pour le niveau de fonctionnalité et la dimension de texture concernés. Toutefois, l’épuisement de l’espace d’adressage virtuel du GPU, du budget de résidence en mémoire (consultez IDXGIAdapter3::QueryVideoMemoryInfo) et/ou de la mémoire système peut facilement survenir avant. Pour les formats compressés, ces dimensions sont logiques. Par exemple :
  • Pour TEXTURE1D :
    • Width doit être inférieur ou égal à D3D10_REQ_TEXTURE1D_U_DIMENSION sur les niveaux de fonctionnalité inférieurs à 11_0 et à D3D11_REQ_TEXTURE1D_U_DIMENSION sur le niveau de fonctionnalité 11_0 ou supérieur.
    • Height doit être égal à 1.
    • DepthOrArraySize est interprété comme la taille du tableau et doit être inférieur ou égal à D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION sur les niveaux de fonctionnalité inférieurs à 11_0 et à D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION sur les niveaux de fonctionnalité 11_0 ou supérieurs.
  • Pour TEXTURE2D :
    • Width et Height doivent être inférieurs ou égaux à D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION sur les niveaux de fonctionnalité inférieurs à 11_0 et à D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION sur le niveau de fonctionnalité 11_0 ou supérieur.
    • DepthOrArraySize est interprété comme la taille du tableau et doit être inférieur ou égal à D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION sur les niveaux de fonctionnalité inférieurs à 11_0 et à D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION sur les niveaux de fonctionnalité 11_0 ou supérieurs.
  • Pour TEXTURE3D :
    • Width, Height et DepthOrArraySize doivent être inférieurs ou égaux à D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION sur les niveaux de fonctionnalité inférieurs à 11_0 et à D3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSION sur le niveau de fonctionnalité 11_0 ou supérieur.
    • DepthOrArraySize est interprété comme la profondeur.
Les remarques suivantes s’appliquent à toutes les tailles de texture.

Alignment

Alignment peut être égal à 0, 4 Ko, 64 Ko ou 4 Mo. Si Alignment est défini sur 0, le runtime utilise 4 Mo pour les textures MSAA et 64 Ko pour tout le reste. L’application peut choisir des alignements plus petits que ces valeurs par défaut pour quelques types de textures lorsque la texture est petite. Les textures avec une disposition UNKNOWN et MSAA peuvent être créées avec un alignement de 64 Ko (si elles respectent la restriction de petite taille détaillée ci-dessous). Les textures avec une disposition UNKNOWN sans MSAA et sans indicateur de cible de rendu ni de profondeur-gabarit peuvent être créées avec un alignement de 4 Ko (là encore, en respectant la restriction de petite taille). Les applications peuvent créer des ressources avec un alignement plus petit lorsque la taille estimée du niveau de mip le plus détaillé est au total inférieure ou égale à la restriction d’alignement plus grande. Le runtime utilise un mécanisme d’estimation de taille indépendant de l’architecture, qui imite la façon dont le swizzle standard et les ressources en mosaïque D3D12 sont dimensionnés. Toutefois, pour ces calculs, les tailles de mosaïque correspondent à la restriction d’alignement plus petite. En prenant comme exemple une texture qui n’est ni une cible de rendu ni une texture de profondeur-gabarit, le runtime suppose des formes de mosaïque quasi équilatérales de 4 Ko et calcule le nombre de mosaïques nécessaires pour le niveau de mip le plus détaillé. Si le nombre de mosaïques est inférieur ou égal à 16, l’application peut créer une ressource alignée sur 4 Ko. Ainsi, un tableau tex2d avec mips, de n’importe quelle taille de tableau et avec n’importe quel nombre de niveaux de mip, peut être de 4 Ko, à condition que la largeur et la hauteur soient suffisamment petites pour le format et le MSAA concernés.

MipLevels

MipLevels peut être égal à 0, ou compris entre 1 et le nombre maximal de niveaux de mip pris en charge par les dimensions Width, Height et DepthOrArraySize. Lorsque 0 est utilisé, l’API calcule automatiquement le nombre maximal de niveaux de mip pris en charge et l’utilise. Cependant, certaines propriétés de ressource et de tas excluent les niveaux de mip ; l’application doit donc spécifier la valeur 1. Reportez-vous au champ D3D12_FORMAT_SUPPORT1_MIP de D3D12_FORMAT_SUPPORT1 pour connaître les restrictions propres à chaque format. Les ressources MSAA, les textures avec D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER et les tas avec D3D12_HEAP_FLAG_ALLOW_DISPLAY excluent tous les niveaux de mip.

Format

Format doit être un format valide pris en charge au niveau de fonctionnalité de l’appareil.

SampleDesc

Une valeur SampleDesc.Count supérieure à 1 et/ou une valeur Quality non nulle ne sont prises en charge que pour TEXTURE2D et lorsque D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL est défini. Les éléments suivants ne sont pas pris en charge :
  • D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,
  • D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS,
  • D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS,
  • D3D12_HEAP_FLAG_ALLOW_DISPLAY
Consultez D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS pour déterminer les valeurs Count et Quality valides.

Configuration requise

En-tête : d3d12_xs.h
Plateformes prises en charge : consoles XBOX Series

Voir aussi

Vue d’ensemble de l’API Direct3D 12 de retour d’échantillonneur d3d12_xs
Dernière modification le 6 octobre 2026