Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Normalmente, una unidad de procesamiento de gráficos discretos (GPU) solo tiene una pequeña parte de su búfer de fotogramas expuesto a través del bus PCI. Para compatibilidad con sistemas operativos de 32 bits, las GPU discretas suelen reservar una región de E/S de 256 MB para sus frame buffers. Este valor se usa para la configuración mediante el firmware típico.
En las GPU que admiten un registro de direcciones base redimensionable (BAR), Windows renegocia el tamaño del BAR de una GPU después de la inicialización del firmware en Windows Display Driver Model (WDDM) v2 y versiones posteriores. Para obtener más información sobre el BAR reajustable, consulte la especificación de capacidad BAR reajustable en la biblioteca de especificaciones de PCI SIG.
Una GPU que admita BAR redimensionable debe asegurar que la pantalla continúe mostrando una imagen estática durante el proceso de reprogramación del BAR. La pantalla no debe ir en blanco ni parpadear durante este proceso. Es importante tener una transición fluida entre la imagen mostrada por firmware, la imagen del cargador de arranque y la primera imagen generada por el controlador en modo kernel. No se produce ninguna transacción PCI hacia la GPU mientras se realiza la renegociación.
La renegociación es principalmente invisible para el controlador en modo kernel. Cuando la renegociación se realiza correctamente, el controlador en modo kernel observa que el BAR de la GPU se redimensiona a su tamaño máximo para exponer todo el VRAM de la GPU discreta.
Después de un cambio de tamaño exitoso, el controlador en modo núcleo debe exponer un único CPUVisible segmento de memoria al administrador de memoria de vídeo. El administrador de memoria de vídeo asigna direcciones virtuales de CPU directamente a este intervalo cuando la CPU necesita acceder al contenido del segmento de memoria. Para obtener más información, consulte estructura DXGK_SEGMENTFLAGS - miembro de CPUVisible.