Compartir a través de


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 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 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 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 de 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 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

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence