Nivel de característica 12 Core 1.0 de Direct3D

El nivel de característica core 1.0 es un subconjunto del conjunto completo de características de Direct3D 12. El nivel de característica core 1.0 se puede exponer mediante una categoría de dispositivos conocidos como dispositivos de solo proceso. El modelo de controlador general para dispositivos de solo proceso es el modelo de controlador de proceso de Microsoft (MCDM). MCDM es un par de reducción vertical del modelo de controlador de dispositivos Windows (WDDM), que tiene un ámbito mayor.

Un dispositivo que solo admite las características de un nivel de característica principal se conoce como dispositivo principal.

Nota

El dispositivo de solo proceso, el dispositivo MCDM, el dispositivo de nivel de característica principal y el dispositivo principal significan lo mismo. Preferimos el dispositivo Principal por motivos de simplicidad.

Creación de un dispositivo principal

En general, para crear un dispositivo Direct3D 12, llamas a la función D3D12CreateDevice y especificas un nivel de característica mínimo.

Si especifica un nivel de característica de 9 a 12, el dispositivo que se devuelve es un dispositivo enriquecido con características, como una GPU tradicional (que admite un superconjunto de la funcionalidad de un dispositivo core). Un dispositivo Core nunca se devuelve para ese intervalo de niveles de características.

Por otro lado, si especifica un nivel de característica principal (por ejemplo, D3D_FEATURE_LEVEL::D 3D_FEATURE_LEVEL_1_0_CORE), el dispositivo que se devuelve podría ser enriquecido con características o podría ser un dispositivo core.

// d3dcommon.h
D3D_FEATURE_LEVEL_1_0_CORE = 0x1000

Si especifica un _CORE nivel de característica, el nivel de tiempo de ejecución o depuración valida que las características que usa la aplicación están permitidas por ese _CORE nivel de característica. Ese conjunto de características se define más adelante en este tema.

Modelo de sombreador para dispositivos principales

Un dispositivo Core admite el modelo de sombreador 5.0 y versiones posteriores.

El tiempo de ejecución realiza la conversión de modelos de sombreador no DXIL de 5.x a 6.0 DXIL. Por lo tanto, el controlador solo necesita admitir la versión 6.x.

Modelo de administración de recursos para dispositivos principales

  • Dimensiones de recursos admitidas: solo búferes sin formato y estructurados (sin búferes con tipo, textura1d/2D, etc.)
  • No se admiten recursos reservados (en mosaico)
  • No se admiten montones personalizados
  • No se admite ninguna de estas marcas de montón:
    • D3D12_HEAP_FLAG_HARDWARE_PROTECTED
    • D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
    • D3D12_HEAP_FLAG_ALLOW_DISPLAY
    • D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS (se requieren atómicos de sombreador de notas, esta marca es para otra característica, atómicos de adaptador cruzado)

Modelo de enlace de recursos para dispositivos principales

  • Compatibilidad solo con el nivel de enlace de recursos 1
  • Excepciones:
    • No se admiten los muestreadores de textura
    • Compatibilidad con 64 UAV como el nivel de característica 11.1+ (en lugar de solo 8)
    • Las implementaciones no tienen que implementar la comprobación de límites en los accesos de sombreador a los recursos a través de descriptores, los accesos fuera de los límites producen un comportamiento indefinido.
      • Como producto, no se admite la marca de intervalo de descriptores D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS en las firmas raíz.
  • Los descriptores UAV/CBV solo se pueden realizar en recursos de montones predeterminados (por lo que no hay montones de carga o lectura). Esto obliga a la aplicación a realizar copias para obtener datos entre CPU< y> GPU.
  • A pesar de ser el nivel de funcionalidad de enlace más bajo, todavía hay algunas características necesarias incluso en este nivel que merece la pena llamar:
    • Los montones de descriptores se pueden actualizar después de que se registren las listas de comandos (consulte D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE en la especificación de enlace de recursos).
    • Los descriptores raíz son básicamente punteros de GPUVA
      • Aunque no hay compatibilidad con MMU o VA, las máquinas virtuales de búfer que se usan en descriptores raíz se pueden emular mediante implementaciones mediante la aplicación de revisiones de direcciones.

Restricciones de búfer estructurado

Los búferes estructurados deben tener una dirección base que tenga una alineación de 4 bytes y el intervalo debe ser 2 o un múltiplo de 4. El caso de un intervalo de 2 es para las aplicaciones con datos de 16 bits, especialmente si no se admiten búferes con tipo en D3D_FEATURE_LEVEL_1_0_CORE.

El paso especificado en descriptores debe coincidir con el paso especificado en HLSL.

Compatibilidad con la cola de comandos para dispositivos principales

Calcular y copiar colas solo (sin colas 3D, vídeo, etc.).

Compatibilidad del sombreador con dispositivos principales

Solo sombreadores de proceso, sin sombreadores de gráficos (vértice, sombreadores de píxeles, etc.) ni ninguna funcionalidad relacionada, como destinos de representación, cadenas de intercambio, ensamblador de entrada.

Precisión aritmética

Los dispositivos principales no tienen que admitir desnorms para operaciones de punto flotante de 16 bits.

API admitidas para dispositivos principales

La lista siguiente representa el subconjunto admitido de la interfaz de programación de aplicaciones completa (no se muestran las API que no se admiten en el nivel de características de Core 1.0).

Métodos ID3D12Device

Métodos ID3D12Device1

Métodos ID3D12Device2

Métodos ID3D12Device3

Métodos ID3D12Device4

Métodos ID3D12Device5

Métodos ID3D12CommandQueue

Métodos ID3D12CommandList

Métodos ID3D12GraphicsCommandList

Métodos ID3D12GraphicsCommandList1

Métodos ID3D12GraphicsCommandList2

Métodos ID3D12GraphicsCommandList4