Skip to main content
Proporciona detalles sobre la arquitectura del adaptador, de modo que la aplicación pueda optimizarse mejor para determinadas propiedades del adaptador.
Nota Esta estructura ha sido reemplazada por la estructura D3D12_FEATURE_DATA_ARCHITECTURE1. Si su aplicación tiene como destino Windows 10, versión 1703 (Creators’ Update) o superior, use D3D12_FEATURE_DATA_ARCHITECTURE1 (y D3D12_FEATURE_ARCHITECTURE1) en su lugar.

Sintaxis

Miembros

NodeIndex
Tipo: UINT
En el funcionamiento con varios adaptadores, esto indica qué adaptador físico del dispositivo es relevante. Consulte Sistemas de varios adaptadores. La aplicación rellena NodeIndex antes de llamar a CheckFeatureSupport, ya que la aplicación puede recuperar detalles sobre la arquitectura de cada adaptador. TileBasedRenderer
Tipo: BOOL
Especifica si el hardware y el controlador admiten un representador basado en mosaicos. El entorno de ejecución establece este miembro en TRUE si el hardware y el controlador admiten un representador basado en mosaicos. UMA
Tipo: BOOL
Especifica si el hardware y el controlador admiten UMA. El entorno de ejecución establece este miembro en TRUE si el hardware y el controlador admiten UMA. CacheCoherentUMA
Tipo: BOOL
Especifica si el hardware y el controlador admiten UMA coherente con caché. El entorno de ejecución establece este miembro en TRUE si el hardware y el controlador admiten UMA coherente con caché.

Comentarios

Cómo usar UMA y CacheCoherentUMA

Las aplicaciones de D3D12 deben ocuparse de administrar la residencia de la memoria y de proporcionar las propiedades de montón óptimas. Las aplicaciones de D3D12 pueden mantenerse simples y ejecutarse razonablemente bien en muchas arquitecturas de GPU administrando únicamente la residencia de los recursos en los montones D3D12_HEAP_TYPE_DEFAULT. Esas aplicaciones solo necesitan llamar a IDXGIAdapter3::QueryVideoMemoryInfo para DXGI_MEMORY_SEGMENT_GROUP_LOCAL, y deben tolerar 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 simple es demasiado restrictivo para las aplicaciones que llevan los límites al máximo. Por lo tanto, D3D12_FEATURE_DATA_ARCHITECTURE ayuda a las aplicaciones a optimizarse mejor para las propiedades del adaptador subyacente. Es posible que algunas aplicaciones quieran optimizarse mejor para los adaptadores discretos y asumir la complejidad adicional de administrar los presupuestos tanto de la memoria del sistema como de la memoria de vídeo. Si el tamaño de los montones de carga rivaliza con el tamaño de las texturas predeterminadas, se dispone de casi el doble de utilización de memoria. Al admitir estas optimizaciones, una aplicación puede detectar dos presupuestos de residencia o reconocer que UMA es false. Es posible que algunas aplicaciones quieran optimizarse mejor para los adaptadores integrados/UMA, especialmente las interesadas en prolongar la duración de la batería en dispositivos móviles. Las aplicaciones de D3D12 simples se ven obligadas a copiar datos entre montones con distintas atribuciones, cuando no siempre es necesario en UMA. Sin embargo, la propiedad UMA, por sí sola, abarca un área gris razonablemente imprecisa de diseños de GPU. No dé por hecho que UMA significa que toda la memoria accesible desde la GPU se puede hacer accesible libremente desde la CPU, porque no es así. Hay una propiedad que se ajusta más a ese tipo de razonamiento: CacheCoherentUMA. Cuando CacheCoherentUMA es false, se dispone de un único presupuesto de residencia, pero el diseño UMA suele beneficiarse de las tres atribuciones de montón. Existen oportunidades para eliminar la copia de recursos mediante un uso inteligente de los recursos y montones de carga y lectura diferida, que proporcionan acceso de la CPU a la memoria. No obstante, esas oportunidades no son claras. Por lo tanto, las aplicaciones deben ser prudentes; y es aconsejable experimentar en una variedad de sistemas “UMA”, ya que puede estar justificado recurrir a habilitar o excluir determinados identificadores de dispositivo. Se recomienda comprender la arquitectura de memoria de la GPU y cómo los tipos de montón se traducen en propiedades de caché. La viabilidad del éxito depende probablemente de la frecuencia con la que cada procesador lee o escribe los datos, del tamaño y la localidad de los accesos a los datos, etc. Para desarrolladores avanzados: cuando UMA es true y CacheCoherentUMA es false, la característica más singular de estos adaptadores es que los montones de carga siguen siendo de combinación de escritura. Sin embargo, algunos adaptadores UMA se benefician tanto de la propiedad de sin acceso de CPU como de la de combinación de escritura de los montones predeterminados y de carga. Consulte GetCustomHeapProperties para obtener más detalles. Cuando CacheCoherentUMA es true, las aplicaciones pueden plantearse con más firmeza abandonar la atribución de montones y usar en todas partes el equivalente de montón personalizado de los montones de carga. Las optimizaciones de UMA de copia cero se recomiendan de forma más general, ya que más escenarios simplemente se beneficiarán del uso compartido. El modelo de memoria es muy propicio para más escenarios y una adopción más amplia. Es posible que sigan existiendo algunos casos extremos en los que los beneficios no se obtengan fácilmente, pero deberían ser mucho más raros y menos perjudiciales que otras opciones. Para desarrolladores avanzados: CacheCoherentUMA significa que una cantidad significativa de las cachés 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 singular es que los montones de carga son en realidad de reescritura (write-back) en CacheCoherentUMA. Para estas arquitecturas, el uso de la combinación de escritura en los montones de carga suele ser perjudicial. La gran mayoría de las aplicaciones de un solo adaptador deberían ignorar los detalles de bajo nivel. Como es habitual, las aplicaciones de un solo adaptador pueden simplificar el panorama y asegurarse de que las escrituras de la CPU en los montones de carga usen patrones compatibles con la combinación de escritura. Los detalles de nivel inferior ayudan a reforzar los conceptos para las aplicaciones de varios adaptadores. Es probable que las aplicaciones de varios adaptadores necesiten comprender las propiedades de la arquitectura de los adaptadores lo suficientemente bien como para elegir las propiedades de montón personalizado óptimas para mover datos de forma eficaz entre adaptadores.

Requisitos

Encabezado: d3d12_xs.h o d3d12_x.h
Biblioteca: d3d12_xs.lib o d3d12_x.lib
Plataformas compatibles: consolas XBOX Series y familia XBOX One

Consulte también

Estructuras principales D3D12_FEATURE
Última modificación el 28 de agosto de 2026