Función D3DKMTCreateNativeFence (d3dkmthk.h)
Dxgkrnl llama a D3DKMTCreateNativeFence para crear un objeto nativo de barrera de GPU en un dispositivo determinado.
Sintaxis
NTSTATUS D3DKMTCreateNativeFence(
D3DKMT_CREATENATIVEFENCE *unnamedParam1
);
Parámetros
unnamedParam1
[in/out] Puntero a una estructura de D3DKMT_CREATENATIVEFENCE que describe el objeto de barrera que se va a crear.
Valor devuelto
D3DKMTCreateNativeFence devuelve STATUS_SUCCESS al crearse correctamente. De lo contrario, devuelve un código de error NTSTATUS, como STATUS_INVALID_PARAMETER.
Comentarios
El D3DDDI_NATIVEFENCE_TYPE especificado determina el tipo de barrera nativa que crea el sistema operativo. Estas barreras difieren en la funcionalidad, las características de rendimiento y los requisitos de almacenamiento para CurrentValue y MonitoredValue. En la tabla siguiente se muestran estas diferencias, donde CVal significa CurrentValue y MVal significa MonitoredValue.
Tipo | CurrentValue | MonitoredValue | Admite el uso compartido entre procesos en la CPU | Admite el uso compartido entre adaptadores | CVal de CPUVA de mensajería unificada | KM CPUVA CVal | GPU VA CVal | CMPVA CVal | UM MVal | KM MVal | GPU VA MVal | CMPVA MVal | Caso de uso |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D3DDDI_NATIVEFENCE_TYPE_DEFAULT | Sysmem | Sysmem | Sí | Sí | ReadOnly | Lectura/Escritura | Lectura/Escritura | Lectura/Escritura | N/D | Escritura | ReadOnly (o lectura y escritura) | Lectura/Escritura | Barreras de aplicación con interrupciones de CPU reducidas. El waiter de GPU se desbloquea sin despertar la CPU |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMIZADO) | Sysmem | VRAM | Sí | Sí | ReadOnly | Lectura/Escritura | Lectura/Escritura | Lectura/Escritura | N/D | Escritura | ReadOnly (o lectura y escritura) | Lectura/Escritura | Igual que el tipo 0, pero con el tráfico reducido del bus PCI que las lecturas de MVal son locales para la GPU. El comando de señal de GPU se completa más rápido debido a esta latencia reducida (rendimiento++). |
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU | VRAM | VRAM | Sí | No | N/D | N/D | Lectura/Escritura | Lectura/Escritura | N/D | N/D | ReadOnly (o lectura y escritura) | Lectura/Escritura | Sincronización del nivel de búfer de comandos (no visible para la aplicación) dentro de la misma GPU. Lectura y escritura en el valor de barrera (CVal) es local, por lo que las operaciones de señal y desbloqueo son rápidas. |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT
- Compatible con Windows 11, versión 24H2.
- Este tipo de barrera admite todos los objetos de sincronización D3DKMT existentes Wait/Signal desde operaciones de CPU/GPU.
- Tanto el almacenamiento CurrentValue como monitoredValue para este tipo de barrera se asignan en el segmento de memoria del sistema.
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (optimizado)
- Esta funcionalidad no es compatible actualmente con el sistema operativo.
- La versión optimizada de D3DDDI_NATIVEFENCE_TYPE_DEFAULT, en la que se puede asignar el almacenamiento MonitoredValue en VRAM, acelerará las lecturas de MonitoredValue desde el motor de GPU.
- Esta optimización no se expone a UMD. En su lugar, Dxgkrnl y KMD decidirán si el tipo de barrera predeterminado se puede optimizar asignando el almacenamiento MonitoredValue en VRAM.
- El almacenamiento monitoredValue asignado en VRAM todavía puede reducirse a la memoria del sistema si el sistema está bajo presión de memoria local.
- Si el sistema operativo admite este tipo de barrera, establece SupportOptimizedDefaultFenceType en TRUE en la tabla de interfaz de características de DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 . Se espera que KMD consulte la tabla de interfaz de características durante la inicialización del controlador para determinar esta funcionalidad del sistema operativo.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU
- Esta funcionalidad no es compatible actualmente con el sistema operativo.
- Una barrera de D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU no admite ninguna operación de CPU; es decir, el sistema operativo no permite al modo de usuario poner en cola las esperas y señales a este objeto de barrera.
- Por lo tanto, este tipo no se puede usar para las barreras de aplicaciones DX que deben admitir la semántica de espera y señal de CPU. Este tipo se usa principalmente para barreras umD internas para la sincronización entre motores de GPU. La creación de este tipo como un objeto de barrera nativa D3DKMT proporciona visibilidad sobre estas barreras para herramientas como GpuView y depuración.
- El segmento admitido para esta barrera debe ser un segmento de memoria local no visible para cpu.
- El almacenamiento asignado en la memoria local puede reducirse a la memoria del sistema si el sistema está bajo presión de memoria local.
- Si el sistema operativo admite este tipo de barrera, establece SupportIntraGpuFenceType en TRUE en la tabla de interfaz de características de DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 . Se espera que KMD consulte la tabla de interfaz de características durante la inicialización del controlador para determinar esta funcionalidad del sistema operativo.
Para obtener más información sobre las barreras nativas de GPU, consulte Objetos de barrera de GPU nativas.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 11, versión 24H2 |
Encabezado | d3dkmthk.h |
Consulte también
D3DKMTOpenNativeFenceFromNTHandle