Sintaxe
Membros
DimensionTipo: 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 Especifica um membro de DXGI_FORMAT. SampleDesc
Tipo: DXGI_SAMPLE_DESC Especifica uma estrutura DXGI_SAMPLE_DESC. Layout
Tipo: D3D12_TEXTURE_LAYOUT Especifica um membro de D3D12_TEXTURE_LAYOUT. Flags
Tipo: D3D12_RESOURCE_FLAGS Sinalizadores combinados por OR bit a bit, como constantes de enumeração D3D12_RESOURCE_FLAGS. SamplerFeedbackMipRegion
Tipo: 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
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.
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
Requisitos
Cabeçalho: d3d12_xs.hPlataformas com suporte: consoles XBOX Series
