Compartir a través de


estructura D3D12_FEATURE_DATA_ARCHITECTURE (d3d12.h)

Proporciona detalles sobre la arquitectura del adaptador para que la aplicación pueda optimizar mejor determinadas propiedades del adaptador.

Nota Esta estructura se ha reemplazado por la estructura de D3D12_FEATURE_DATA_ARCHITECTURE1. Si la aplicación tiene como destino Windows 10, versión 1703 (Creators' Update) o posterior, use D3D12_FEATURE_DATA_ARCHITECTURE1 (y D3D12_FEATURE_ARCHITECTURE1) en su lugar.
 

Sintaxis

typedef struct D3D12_FEATURE_DATA_ARCHITECTURE {
  UINT NodeIndex;
  BOOL TileBasedRenderer;
  BOOL UMA;
  BOOL CacheCoherentUMA;
} D3D12_FEATURE_DATA_ARCHITECTURE;

Miembros

NodeIndex

En la operación de varios adaptadores, esto indica qué adaptador físico del dispositivo es relevante. Consulte sistemas de varios adaptadores. NodeIndex se rellena mediante la aplicación antes de llamar a CheckFeatureSupport, ya que la aplicación puede recuperar detalles sobre la arquitectura de cada adaptador.

TileBasedRenderer

Especifica si el hardware y el controlador admiten un representador basado en iconos. El tiempo de ejecución establece este miembro en TRUE si el hardware y el controlador admiten un representador basado en iconos.

UMA

Especifica si el hardware y el controlador admiten UMA. El tiempo de ejecución establece este miembro en TRUE si el hardware y el controlador admiten UMA.

CacheCoherentUMA

Especifica si el hardware y el controlador admiten UMA coherente con la memoria caché. El tiempo de ejecución establece este miembro en TRUE si el hardware y el controlador admiten UMA coherente con la memoria caché.

Observaciones

Cómo usar UMA y CacheCoherentUMA

Las aplicaciones D3D12 deben preocuparse por administrar la residencia de memoria y proporcionar las propiedades óptimas del montón. Las aplicaciones D3D12 pueden simplificarse y ejecutarse razonablemente bien en muchas arquitecturas de GPU mediante la administración de la residencia de recursos en D3D12_HEAP_TYPE_DEFAULT montones. Esas aplicaciones solo necesitan llamar a IDXGIAdapter3::QueryVideoMemoryInfo para DXGI_MEMORY_SEGMENT_GROUP_LOCAL, y deben ser tolerantes a que D3D12_HEAP_TYPE_UPLOAD y D3D12_HEAP_TYPE_READBACK provengan de ese mismo grupo de segmentos de memoria.

Sin embargo, un diseño tan sencillo es demasiado restringido para las aplicaciones que insertan los límites. Por lo tanto, D3D12_FEATURE_DATA_ARCHITECTURE ayuda a las aplicaciones a optimizar mejor las propiedades del adaptador subyacente.

Es posible que algunas aplicaciones quieran optimizar mejor los adaptadores discretos y asumir la complejidad adicional de administrar los presupuestos de memoria del sistema y de memoria de vídeo. Si el tamaño de los montones de carga rivaliza con el tamaño de las texturas predeterminadas, hay disponible una duplicación casi del uso de memoria. Al admitir estas optimizaciones, una aplicación puede detectar dos presupuestos de residencia o reconocer UMA es false.

Es posible que algunas aplicaciones quieran optimizar mejor los adaptadores integrados o UMA, especialmente aquellos que están interesados en extender la duración de la batería en el dispositivo móvil. Las aplicaciones D3D12 simples se ven forzadas a copiar datos entre montones con diferentes atribución, cuando no siempre es necesario en UMA. Sin embargo, la propiedad UMA, por sí misma, abarca un área gris razonablemente vaga de los diseños de GPU. No suponga que UMA significa que toda la memoria accesible para GPU puede ser accesible libremente a la CPU, ya que no lo hace. Hay una propiedad que se alinea más estrechamente con ese tipo de pensamiento: CacheCoherentUMA.

Cuando CacheCoherentUMA es false, hay disponible un único presupuesto de residencia, pero el diseño de UMA se beneficia normalmente de las tres atribución de montón. Existen oportunidades para quitar la copia de recursos a través del uso adecuado de los recursos de carga y lectura y los montones, que proporcionan acceso a la CPU a la memoria. Sin embargo, estas oportunidades no son claras. Por lo tanto, las aplicaciones deben ser cautelosas; y la experimentación en una variedad de sistemas "UMA" es aconsejable, ya que se puede garantizar la posibilidad de habilitar o descartar determinados identificadores de dispositivo. Se recomienda comprender la arquitectura de memoria de GPU y cómo se recomiendan los tipos de montón a las propiedades de caché. Es probable que la viabilidad del éxito dependa de la frecuencia con la que cada procesador lee o escribe los datos, el tamaño y la localidad de los accesos a los datos, etcetera. Para desarrolladores avanzados: cuando UMA es true y cacheCoherentUMA es false, la característica más única para estos adaptadores es que los montones de carga siguen siendo combinados de escritura. Sin embargo, algunos adaptadores de UMA se benefician de las propiedades sin acceso a CPU y escritura-combine de los montones predeterminados y de carga. Consulte GetCustomHeapProperties para obtener más información.

Cuando cacheCoherentUMA es cierto, las aplicaciones pueden entretener mucho más abandonar la atribución de montones y usar el equivalente de montón personalizado de montón de carga en todas partes. Las optimizaciones de UMA de copia cero se animan más generalmente, ya que más escenarios solo se beneficiarán del uso compartido. El modelo de memoria es muy favorable a más escenarios y a una adopción más amplia. Algunos casos de esquina pueden existir en los que las ventajas no se obtienen fácilmente, pero deben ser mucho más raras y menos perjudiciales que otras opciones. Para desarrolladores avanzados: CacheCoherentUMA significa que una cantidad significativa de las memorias caché de la jerarquía de memoria también están unificadas o integradas entre la CPU y la GPU. La característica observable más única es que los montones de carga se vuelven a escribir en CacheCoherentUMA. Para esta arquitectura, el uso de la combinación de escritura en los montones de carga suele ser perjudicial.

La mayoría de las aplicaciones de adaptador único deben omitir los detalles de bajo nivel. Como de costumbre, las aplicaciones de adaptador único pueden simplificar el panorama y asegurarse de que las escrituras de CPU para cargar montones usan patrones que son descriptivos para escritura y combinación. Los detalles de nivel inferior ayudan a reforzar los conceptos de las aplicaciones de varios adaptadores. Es probable que las aplicaciones de varios adaptadores necesiten comprender las propiedades de la arquitectura del adaptador lo suficientemente bien como para elegir las propiedades de montón personalizadas óptimas para mover datos de forma eficaz entre adaptadores.

Requisitos

Requisito Valor
encabezado de d3d12.h

Consulte también

estructuras principales de

D3D12_FEATURE