Función D3DKMTCreateNativeFence (d3dkmthk.h)
El tiempo de ejecución D3D 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.
Observaciones
El D3DDDI_NATIVEFENCE_TYPE especificado dicta 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 de 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 y escritura | Lectura y escritura | Lectura y escritura | N/A | Escribir | ReadOnly (o lectura y escritura) | Lectura y escritura | Barreras de aplicación con interrupciones de CPU reducidas. El waiter de GPU se desbloquea sin despertar la CPU |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMIZED) | Sysmem | VRAM | Sí | Sí | ReadOnly | Lectura y escritura | Lectura y escritura | Lectura y escritura | N/A | Escribir | ReadOnly (o lectura y escritura) | Lectura y escritura | Igual que el tipo 0, pero con un tráfico de bus PCI reducido 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/A | N/A | Lectura y escritura | Lectura y escritura | N/A | N/A | ReadOnly (o lectura y escritura) | Lectura y 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/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 CurrentValue como MonitoredValue almacenamiento 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 deMonitoredValue 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 almacenamiento MonitoredValue en VRAM.
- MonitoredValue almacenamiento asignado en VRAM todavía se puede degradar 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 que el modo de usuario espere en cola 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 de 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 la 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 | Valor |
---|---|
cliente mínimo admitido | Windows 11, versión 24H2 |
encabezado de |
d3dkmthk.h |
Consulte también
D3DKMTOpenNativeFenceFromNTHandle