estructura de 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 de 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.

Comentarios

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

Los búferes son una región de memoria contigua. El ancho puede estar comprendido entre 1 y el campo MaxGPUVirtualAddressBitsPerResource de D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT para los recursos reservados o el campo MaxGPUVirtualAddressBitsPerProcess para los 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 producirse fácilmente en primer lugar.

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

Height, DepthOrArraySize y MipLevels deben ser 1.

El formato debe ser DXGI_FORMAT_UNKNOWN.

SampleDesc.Count debe ser 1 y La calidad debe ser 0.

El diseño debe ser D3D12_TEXTURE_LAYOUT_ROW_MAJOR, ya que las aplicaciones comprenden los diseños de memoria del búfer y los datos de textura principales de fila suelen serializarse a través de búferes.

Las marcas deben rellenarse con precisión por 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

Las texturas son una disposición multidimensional de texturas 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, Height y DepthOrArraySize deben estar comprendidos entre 1 y la dimensión máxima admitida para el nivel de característica y la dimensión de textura concretos. 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 producirse fácilmente en primer lugar. En el caso de los formatos comprimidos, estas dimensiones son lógicas. Por ejemplo:

  • Para TEXTURE1D:
    • El 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.
    • El 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ísticas 11_0 o superior.
  • Para TEXTURE2D:
    • Width y Height 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ísticas 11_0 o superior.
  • Para TEXTURE3D:
    • Width 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

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

Si Alignment está establecido 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 estas predeterminadas 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 profundidad pueden crearse 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 que no es de destino de representación y galería de símbolos no de profundidad como ejemplo, el tiempo de ejecución asume formas de mosaico casi equilaterales 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 tex2d de cualquier tamaño de matriz y cualquier número de niveles mip puede ser de 4 KB, siempre y cuando el ancho y el alto sean lo suficientemente pequeños para el formato concreto y MSAA.

MipLevels

MipLevels puede ser de 0 o 1 a los niveles mip máximos admitidos por las dimensiones Width, Height y DepthOrArraySize . Cuando se usa 0, la API calculará automáticamente los niveles mip máximos admitidos y los usará. Sin embargo, algunas propiedades de recursos 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 las restricciones por formato. Los recursos de MSAA, las texturas con D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER y montones con D3D12_HEAP_FLAG_ALLOW_DISPLAY excluyen todos los niveles mip.

Format

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

SampleDesc

Un sampleDesc.Count mayor que 1 o distinto de cero Calidad solo se admite para TEXTURE2D y cuando se establecen D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL.

No se admite 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 valores válidos de recuento y calidad .

Requisitos

Requisito Valor
Header d3d12.h

Consulte también

CD3DX12_RESOURCE_DESC

Estructuras principales

D3D12_HEAP_FLAGS