> ## 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)

> Descreve um recurso, como uma textura.

Descreve um recurso, como uma textura. Essa estrutura é usada extensivamente.

## Sintaxe

```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  
```

### Membros

*Dimension*\
Tipo: [D3D12\_RESOURCE\_DIMENSION](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_dimension)

Um membro de D3D12\_RESOURCE\_DIMENSION, que especifica as dimensões do recurso (por exemplo, D3D12\_RESOURCE\_DIMENSION\_TEXTURE1D) ou se ele é um buffer ((D3D12\_RESOURCE\_DIMENSION\_BUFFER).

*Alignment*\
Tipo: UINT64

Especifica o alinhamento em bytes.

*Width*\
Tipo: UINT64

Especifica a largura do recurso.

*Height*\
Tipo: UINT

Especifica a altura do recurso.

*DepthOrArraySize*\
Tipo: UINT16

Especifica a profundidade do recurso, se ele for 3D, ou o tamanho da matriz, se for uma matriz de recursos 1D ou 2D.

*MipLevels*\
Tipo: UINT16

Especifica o número de níveis de MIP.

*Format*\
Tipo: [DXGI\_FORMAT](/pt-BR/reference/graphics/d3d12_xs/enums/dxgi_format)

Especifica um membro de DXGI\_FORMAT.

*SampleDesc*\
Tipo: DXGI\_SAMPLE\_DESC

Especifica uma estrutura DXGI\_SAMPLE\_DESC.

*Layout*\
Tipo: [D3D12\_TEXTURE\_LAYOUT](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_texture_layout)

Especifica um membro de D3D12\_TEXTURE\_LAYOUT.

*Flags*\
Tipo: [D3D12\_RESOURCE\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_flags)

Sinalizadores combinados por OR bit a bit, como constantes de enumeração D3D12\_RESOURCE\_FLAGS.

*SamplerFeedbackMipRegion*\
Tipo: [D3D12\_MIP\_REGION](/pt-BR/reference/graphics/d3d12_xs/structs/d3d12_mip_region)

Para um recurso de sampler feedback, descreve o tamanho, no recurso rastreado, representado por um texel de feedback.

## Comentários

Use esta estrutura com:

* ID3D12Resource::GetDesc
* ID3D12Device::GetResourceAllocationInfo
* ID3D12Device::CreateCommittedResource
* ID3D12Device::CreatePlacedResource
* ID3D12Device::CreateReservedResource
* ID3D12Device::GetCopyableFootprints

Para várias das funções auxiliares, consulte Estruturas e funções auxiliares para D3D12.
Dois recursos comuns são buffers e texturas, que usam essa estrutura, mas com usos bem diferentes dos campos.

### Buffers

Buffers são uma região de memória contígua. Width pode estar entre 1 e o campo MaxGPUVirtualAddressBitsPerResource de D3D12\_FEATURE\_DATA\_GPU\_VIRTUAL\_ADDRESS\_SUPPORT para recursos reservados ou o campo MaxGPUVirtualAddressBitsPerProcess para recursos confirmados. No entanto, o esgotamento do espaço de endereço virtual da GPU, do orçamento de residência de memória (consulte IDXGIAdapter3::QueryVideoMemoryInfo) e/ou da memória do sistema pode facilmente ocorrer primeiro.
Alignment deve ser 64KB (D3D12\_DEFAULT\_RESOURCE\_PLACEMENT\_ALIGNMENT) ou 0, o que equivale efetivamente a 64KB.

Height, DepthOrArraySize e MipLevels devem ser 1.

Format deve ser DXGI\_FORMAT\_UNKNOWN.

SampleDesc.Count deve ser 1 e Quality deve ser 0.

Layout deve ser D3D12\_TEXTURE\_LAYOUT\_ROW\_MAJOR, pois os layouts de memória de buffer são compreendidos pelos aplicativos e os dados de textura em ordem de linha principal (row-major) costumam ser transferidos por meio de buffers.

Flags ainda deve ser preenchido com precisão pelos aplicativos para buffers, com pequenas exceções. No entanto, os aplicativos podem usar o máximo de suporte a recursos sem se preocupar com o impacto na eficiência dos buffers. O campo Flags destina-se a controlar propriedades relacionadas a texturas.

### Texturas

Texturas são um arranjo multidimensional de texels em uma região contígua de memória, altamente otimizado para maximizar a largura de banda para renderização e amostragem. Os tamanhos das texturas são difíceis de prever e variam de adaptador para adaptador. Os aplicativos devem usar ID3D12Device::GetResourceAllocationInfo para entender com precisão seu tamanho.
TEXTURE1D, TEXTURE2D e TEXTURE3D não são compatíveis ortogonalmente em todos os formatos. Consulte o uso de D3D12\_FORMAT\_SUPPORT1\_TEXTURE1D, D3D12\_FORMAT\_SUPPORT1\_TEXTURE2D e D3D12\_FORMAT\_SUPPORT1\_TEXTURE3D em D3D12\_FORMAT\_SUPPORT1.

Width, Height e DepthOrArraySize devem estar entre 1 e a dimensão máxima compatível com o nível de recurso e a dimensão de textura específicos. No entanto, o esgotamento do espaço de endereço virtual da GPU, do orçamento de residência de memória (consulte IDXGIAdapter3::QueryVideoMemoryInfo) e/ou da memória do sistema pode facilmente ocorrer primeiro. Para formatos compactados, essas dimensões são lógicas. Por exemplo:

* Para TEXTURE1D:
  * Width deve ser menor ou igual a D3D10\_REQ\_TEXTURE1D\_U\_DIMENSION em níveis de recurso inferiores a 11\_0 e a D3D11\_REQ\_TEXTURE1D\_U\_DIMENSION no nível de recurso 11\_0 ou superior.
  * Height deve ser 1.
  * DepthOrArraySize é interpretado como tamanho da matriz e deve ser menor ou igual a D3D10\_REQ\_TEXTURE1D\_ARRAY\_AXIS\_DIMENSION em níveis de recurso inferiores a 11\_0 e a D3D11\_REQ\_TEXTURE1D\_ARRAY\_AXIS\_DIMENSION em níveis de recurso 11\_0 ou superiores.
* Para TEXTURE2D:
  * Width e Height devem ser menores ou iguais a D3D10\_REQ\_TEXTURE2D\_U\_OR\_V\_DIMENSION em níveis de recurso inferiores a 11\_0 e a D3D11\_REQ\_TEXTURE2D\_U\_OR\_V\_DIMENSION no nível de recurso 11\_0 ou superior.
  * DepthOrArraySize é interpretado como tamanho da matriz e deve ser menor ou igual a D3D10\_REQ\_TEXTURE2D\_ARRAY\_AXIS\_DIMENSION em níveis de recurso inferiores a 11\_0 e a D3D11\_REQ\_TEXTURE2D\_ARRAY\_AXIS\_DIMENSION em níveis de recurso 11\_0 ou superiores.
* Para TEXTURE3D:
  * Width, Height e DepthOrArraySize devem ser menores ou iguais a D3D10\_REQ\_TEXTURE3D\_U\_V\_OR\_W\_DIMENSION em níveis de recurso inferiores a 11\_0 e a D3D11\_REQ\_TEXTURE2D\_U\_V\_OR\_W\_DIMENSION no nível de recurso 11\_0 ou superior.
  * DepthOrArraySize é interpretado como profundidade.

As observações a seguir se aplicam a todos os tamanhos de textura.

### Alignment

Alignment pode ser 0, 4KB, 64KB ou 4MB.
Se Alignment for definido como 0, o runtime usará 4MB para texturas MSAA e 64KB para todo o resto. O aplicativo pode escolher alinhamentos menores do que esses padrões para alguns tipos de textura quando a textura for pequena. Texturas com layout UNKNOWN e MSAA podem ser criadas com alinhamento de 64KB (se passarem na restrição de tamanho pequeno detalhada abaixo).

Texturas com layout UNKNOWN sem MSAA e sem sinalizadores de destino de renderização nem de estêncil de profundidade podem ser criadas com Alignment de 4KB (novamente, passando na restrição de tamanho pequeno).

Os aplicativos podem criar recursos com alinhamento menor quando o tamanho estimado do nível de mip mais detalhado totalizar a restrição de alinhamento maior ou menos. O runtime usará um mecanismo de estimativa de tamanho independente de arquitetura, que imita a forma como os recursos padrão de swizzle e os recursos em blocos (tiled) do D3D12 são dimensionados. No entanto, os tamanhos de bloco serão os da restrição de alinhamento menor para esses cálculos. Usando como exemplo a textura que não é destino de renderização nem estêncil de profundidade, o runtime presumirá formatos de bloco quase equiláteros de 4KB e calculará o número de blocos necessários para o nível de mip mais detalhado. Se o número de blocos for igual ou inferior a 16, o aplicativo poderá criar um recurso alinhado a 4KB. Assim, uma matriz tex2d com mips, de qualquer tamanho de matriz e qualquer número de níveis de mip, pode ser de 4KB, desde que a largura e a altura sejam pequenas o suficiente para o formato e o MSAA específicos.

### MipLevels

MipLevels pode ser 0, ou de 1 até o máximo de níveis de mip compatíveis com as dimensões Width, Height e DepthOrArraySize. Quando 0 é usado, a API calcula automaticamente o máximo de níveis de mip compatíveis e usa esse valor. Porém, algumas propriedades de recurso e de heap impedem níveis de mip, portanto, o aplicativo deve especificar o valor como 1.
Consulte o campo D3D12\_FORMAT\_SUPPORT1\_MIP de D3D12\_FORMAT\_SUPPORT1 para ver as restrições por formato. Recursos MSAA, texturas com D3D12\_RESOURCE\_FLAG\_ALLOW\_CROSS\_ADAPTER e heaps com D3D12\_HEAP\_FLAG\_ALLOW\_DISPLAY impedem níveis de mip.

### Format

Format deve ser um formato válido compatível com o nível de recurso do dispositivo.

### SampleDesc

Um SampleDesc.Count maior que 1 e/ou um Quality diferente de zero só são compatíveis com TEXTURE2D e quando D3D12\_RESOURCE\_FLAG\_ALLOW\_RENDER\_TARGET ou D3D12\_RESOURCE\_FLAG\_ALLOW\_DEPTH\_STENCIL estiver definido.

Os seguintes não são compatíveis:

* D3D12\_TEXTURE\_LAYOUT\_64KB\_STANDARD\_SWIZZLE,
* D3D12\_RESOURCE\_FLAG\_ALLOW\_UNORDERED\_ACCESS,
* D3D12\_RESOURCE\_FLAG\_ALLOW\_SIMULTANEOUS\_ACCESS,
* D3D12\_HEAP\_FLAG\_ALLOW\_DISPLAY

Consulte D3D12\_FEATURE\_DATA\_MULTISAMPLE\_QUALITY\_LEVELS para determinar valores válidos de Count e Quality.

## Requisitos

**Cabeçalho:** d3d12\_xs.h\
**Plataformas com suporte**: consoles XBOX Series

## Confira também

[Visão geral da API Direct3D 12 de Sampler Feedback](https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/graphics/newfeatures/sfs/sf-api-design)

[d3d12\_xs](/pt-BR/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)
