estructura D3D12_RESOURCE_DESC (d3d12.h)

Describe un recurso, como una textura. Esta estructura se usa ampliamente.

Sintaxis

typedef struct D3D12_RESOURCE_DESC {
  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_RESOURCE_DESC;

Miembros

Dimension

Un miembro de D3D12_RESOURCE_DIMENSION, especificando las dimensiones del recurso (por ejemplo, D3D12_RESOURCE_DIMENSION_TEXTURE1D) o si es un búfer ((D3D12_RESOURCE_DIMENSION_BUFFER).

Alignment

Especifica la alineación.

Width

Especifica el ancho del recurso.

Height

Especifica el alto del recurso.

DepthOrArraySize

Especifica la profundidad del recurso, si es 3D o el tamaño de la matriz si es una matriz de recursos 1D o 2D.

MipLevels

Especifica el número de niveles de MIP.

Format

Especifica un miembro de DXGI_FORMAT.

SampleDesc

Especifica una estructura DXGI_SAMPLE_DESC.

Layout

Especifica un miembro de D3D12_TEXTURE_LAYOUT.

Flags

Marcas OR bit a bit, como D3D12_RESOURCE_FLAGS constantes de enumeración.

Observaciones

Use esta estructura con:

Dos recursos comunes son búferes y texturas, que usan esta estructura, pero con usos bastante diferentes de los campos.

Búferes de

Los búferes son una región de memoria contigua. de ancho puede estar entre 1 y campo MaxGPUVirtualAddressBitsPerResource de D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT para recursos reservados o el campo MaxGPUVirtualAddressBitsPerProcess para recursos confirmados. Sin embargo, el agotamiento del espacio de direcciones virtuales de GPU, el presupuesto de residencia de memoria (consulte IDXGIAdapter3::QueryVideoMemoryInfo) y la memoria del sistema puede ocurrir fácilmente en primer lugar.

alineación debe ser de 64 KB (D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) o 0, que es eficaz de 64 KB.

Height, DepthOrArraySizey MipLevels debe ser 1.

de formato debe ser DXGI_FORMAT_UNKNOWN.

SampleDesc.Count debe ser 1 y Quality debe ser 0.

diseño deben ser D3D12_TEXTURE_LAYOUT_ROW_MAJOR, ya que las aplicaciones entienden los diseños de memoria del búfer y los datos de textura principal de fila se calculan normalmente a través de búferes.

marcas deben rellenarse con precisión las aplicaciones para los búferes, con excepciones menores. Sin embargo, las aplicaciones pueden usar la mayor cantidad de compatibilidad de funcionalidad sin preocuparse por el impacto en la eficiencia en los búferes. El campo flags está diseñado para controlar las propiedades relacionadas con las texturas.

Texturas de

Las texturas son una disposición multidimensional de elementos de textura en una región contigua de memoria, optimizada para maximizar el ancho de banda para la representación y el muestreo. Los tamaños de textura son difíciles de predecir y variar de adaptador a adaptador. Las aplicaciones deben usar ID3D12Device::GetResourceAllocationInfo para comprender con precisión su tamaño.

TEXTURE1D, TEXTURE2D y TEXTURE3D no se admiten ortogonalmente en todos los formatos. Consulte el uso de D3D12_FORMAT_SUPPORT1_TEXTURE1D, D3D12_FORMAT_SUPPORT1_TEXTURE2D y D3D12_FORMAT_SUPPORT1_TEXTURE3D en D3D12_FORMAT_SUPPORT1.

Width, Heighty DepthOrArraySize deben estar entre 1 y la dimensión máxima admitida para el nivel de característica y la dimensión de textura en particular. Sin embargo, el agotamiento del espacio de direcciones virtuales de GPU, el presupuesto de residencia de memoria (consulte IDXGIAdapter3::QueryVideoMemoryInfo) y la memoria del sistema puede ocurrir fácilmente en primer lugar. En el caso de los formatos comprimidos, estas dimensiones son lógicas. Por ejemplo:

  • Para TEXTURE1D:
    • ancho debe ser menor o igual que D3D10_REQ_TEXTURE1D_U_DIMENSION en los niveles de características inferiores a 11_0 y D3D11_REQ_TEXTURE1D_U_DIMENSION en el nivel de característica 11_0 o superior.
    • alto debe ser 1.
    • DepthOrArraySize se interpreta como tamaño de matriz y debe ser menor o igual que D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION en los niveles de características inferiores a 11_0 y D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION en los niveles de característica 11_0 o superior.
  • Para TEXTURE2D:
    • ancho y alto deben ser menores o iguales que D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION en los niveles de características inferiores a 11_0 y D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION o nivel de característica 11_0 o superior.
    • DepthOrArraySize se interpreta como tamaño de matriz y debe ser menor o igual que D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION en los niveles de características inferiores a 11_0 y D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION en los niveles de característica 11_0 o superior.
  • Para TEXTURE3D:
    • y Height y DepthOrArraySize deben ser menores o iguales que D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION en los niveles de características inferiores a 11_0 y D3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSION en el nivel de característica 11_0 o superior.
    • depthOrArraySize se interpreta como profundidad.
Las notas siguientes son para todos los tamaños de textura.

alineación de

alineación puede ser de 0, 4 KB, 64 KB o 4 MB.

Si alineación se establece en 0, el tiempo de ejecución usará 4 MB para texturas de MSAA y 64 KB para todo lo demás. La aplicación puede elegir alineaciones más pequeñas que estos valores predeterminados para un par de tipos de textura cuando la textura es pequeña. Las texturas con diseño UNKNOWN y MSAA se pueden crear con alineación de 64 KB (si pasan la restricción de tamaño pequeño que se detalla a continuación).

Las texturas con diseño UNKNOWN sin MSAA y sin marcas de galería de símbolos de representación ni de destino de profundidad se pueden crear con alineación de 4 KB (de nuevo, pasando la restricción de tamaño pequeño).

Las aplicaciones pueden crear recursos alineados más pequeños cuando el tamaño estimado del nivel mip más detallado es un total de la restricción de alineación mayor o menos. El tiempo de ejecución usará un mecanismo independiente de la arquitectura de estimación de tamaño, que imita la forma en que se ajusta el tamaño de los recursos en mosaico estándar y D3D12. Sin embargo, los tamaños de mosaico serán de la restricción de alineación más pequeña para estos cálculos. Con la textura de galería de símbolos que no son de representación y no de profundidad como ejemplo, el tiempo de ejecución asume formas de mosaico casi equiláteros de 4 KB y calcula el número de iconos necesarios para el nivel mip más detallado. Si el número de iconos es igual o menor que 16, la aplicación puede crear un recurso alineado de 4 KB. Por lo tanto, una matriz de tex2d mipped de cualquier tamaño de matriz y cualquier número de niveles mip puede ser de 4 KB, siempre y cuando el ancho y alto sean lo suficientemente pequeños para el formato concreto y MSAA.

MipLevels

mipLevels puede ser 0 o 1 a los niveles mip máximos admitidos por las dimensionesWidth, Height y DepthOrArraySize. Cuando se usa 0, la API calculará automáticamente los niveles máximos de mip admitidos y los usará. Sin embargo, algunas propiedades de recurso y montón impiden los niveles mip, por lo que la aplicación debe especificar el valor como 1.

Consulte el campo D3D12_FORMAT_SUPPORT1_MIP de D3D12_FORMAT_SUPPORT1 para obtener restricciones por formato. Los recursos de MSAA, texturas con D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER y montones con D3D12_HEAP_FLAG_ALLOW_DISPLAY excluyen todos los niveles mip.

formato de

formato debe ser un formato válido admitido en el nivel de característica del dispositivo.

SampleDesc

Un SampleDesc.Count mayor que 1 o no cero Calidad solo se admiten para TEXTURE2D y cuando se establecen D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL.

No se admiten lo siguiente:

  • 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 los valores válidos count y Quality.

Requisitos

Requisito Valor
encabezado de d3d12.h

Consulte también

CD3DX12_RESOURCE_DESC

estructuras principales de

D3D12_HEAP_FLAGS