> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# D3D12_RESOURCE_DESC1 (consoles XBOX Series)

> Décrit une ressource, telle qu'une texture.

Décrit une ressource, telle qu'une texture. Cette structure est largement utilisée.

## Syntaxe

```cpp theme={null}
typedef struct D3D12_RESOURCE_DESC1 {  
    D3D12_RESOURCE_DIMENSION Dimension;  
    UINT64 Alignment;  
    UINT64 Width;  
    UINT Height;  
    UINT16 DepthOrArraySize;  
    UINT16 MipLevels;  
    DXGI_FORMAT Format;  
    DXGI_SAMPLE_DESC SampleDesc;  
    D3D12_TEXTURE_LAYOUT Layout;  
    D3D12_RESOURCE_FLAGS Flags;  
    D3D12_MIP_REGION SamplerFeedbackMipRegion;  
} D3D12_RESOURCE_DESC1  
```

### Membres

*Dimension*\
Type : [D3D12\_RESOURCE\_DIMENSION](/fr-CA/reference/graphics/d3d12_x/enums/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](/fr-CA/reference/graphics/d3d12_xs/enums/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](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_texture_layout)

Spécifie un membre de D3D12\_TEXTURE\_LAYOUT.

*Flags*\
Type : [D3D12\_RESOURCE\_FLAGS](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_resource_flags)

Indicateurs combinés par OU au niveau du bit, sous forme de constantes d'énumération D3D12\_RESOURCE\_FLAGS.

*SamplerFeedbackMipRegion*\
Type : [D3D12\_MIP\_REGION](/fr-CA/reference/graphics/d3d12_xs/structs/d3d12_mip_region)

Pour une ressource de rétroaction d'échantillonneur, décrit la taille, dans la ressource suivie, représentée par un texel de rétroaction.

## 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, consultez 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 compris 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 (voir IDXGIAdapter3::QueryVideoMemoryInfo) ou de la mémoire système peut facilement survenir en premier.
Alignment doit être de 64 Ko (D3D12\_DEFAULT\_RESOURCE\_PLACEMENT\_ALIGNMENT) ou 0, ce qui équivaut en fait à 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 sont couramment transmises au moyen de mémoires tampons.

Flags doit tout de même être rempli avec exactitude par les applications pour les mémoires tampons, à quelques exceptions près. Toutefois, les applications peuvent utiliser la plus grande prise en charge de capacités sans se soucier de l'incidence 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 agencement 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 manière 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 en question. Toutefois, l'épuisement de l'espace d'adressage virtuel du GPU, du budget de résidence en mémoire (voir IDXGIAdapter3::QueryVideoMemoryInfo) ou de la mémoire système peut facilement survenir en premier. 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 aux niveaux de fonctionnalité inférieurs à 11\_0 et à D3D11\_REQ\_TEXTURE1D\_U\_DIMENSION au 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 aux niveaux de fonctionnalité inférieurs à 11\_0 et à D3D11\_REQ\_TEXTURE1D\_ARRAY\_AXIS\_DIMENSION aux 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 aux niveaux de fonctionnalité inférieurs à 11\_0 et à D3D11\_REQ\_TEXTURE2D\_U\_OR\_V\_DIMENSION au 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 aux niveaux de fonctionnalité inférieurs à 11\_0 et à D3D11\_REQ\_TEXTURE2D\_ARRAY\_AXIS\_DIMENSION aux 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 aux niveaux de fonctionnalité inférieurs à 11\_0 et à D3D11\_REQ\_TEXTURE2D\_U\_V\_OR\_W\_DIMENSION au 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 0, 4 Ko, 64 Ko ou 4 Mo.
Si Alignment est défini à 0, le runtime utilisera 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 indicateurs de cible de rendu ni de profondeur-gabarit peuvent être créées avec un Alignment 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é totalise la restriction d'alignement la plus grande ou moins. Le runtime utilisera un mécanisme d'estimation de taille indépendant de l'architecture, qui imite la façon dont les ressources standard swizzle et en mosaïque D3D12 sont dimensionnées. Toutefois, les tailles de mosaïque correspondront à la restriction d'alignement la plus petite pour ces calculs. En prenant comme exemple une texture qui n'est ni cible de rendu ni profondeur-gabarit, le runtime supposera des formes de mosaïques presque équilatérales de 4 Ko et calculera 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 de n'importe quel nombre de niveaux de mip, peut être de 4 Ko, tant que la largeur et la hauteur sont suffisamment petites pour le format et le MSAA en question.

### MipLevels

MipLevels peut être 0, ou de 1 au 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.
Consultez le 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é du périphérique.

### SampleDesc

Un SampleDesc.Count supérieur à 1 ou une valeur Quality non nulle ne sont pris 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 valides de Count et Quality.

## 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 rétroaction d'échantillonneur](https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/graphics/newfeatures/sfs/sf-api-design)

[d3d12\_xs](/fr-CA/reference/graphics/d3d12_xs/d3d12_xs_members)


## Related topics

- [D3D12_RESOURCE_DESC1](/reference/graphics/d3d12/structs/d3d12_resource_desc1_public.md)
- [D3D12_ROOT_SIGNATURE_DESC1](/reference/graphics/d3d12/structs/d3d12_root_signature_desc1_public.md)
- [D3D12_DEPTH_STENCIL_DESC1](/reference/graphics/d3d12/structs/d3d12_depth_stencil_desc1_public.md)
- [D3D12_PROTECTED_RESOURCE_SESSION_DESC1](/reference/graphics/d3d12/structs/d3d12_protected_resource_session_desc1_public.md)
