Se fusionó la cuarta parte de una serie en curso de solicitudes para que Wine reciba el soporte completo de Wayland. La solicitud de extracción se abrió hace 4 semanas y se fusionó con el proyecto Wine el 29 de junio.
Dado que este último trabajo se centró en crear «la infraestructura mínima necesaria para mostrar el contenido de algunas ventanas simples renderizadas por software», según detalló el desarrollador, incluyó dos pasos principales:
- Asociar una ventana a una superficie Wayland y asignarla
xdg_toplevel
rol para que el compositor pueda mostrarlo. También debemos poner en marcha las necesariasxdg_surface
secuencia de configuración para que podamos con seguridad (es decir, sin que el enlazador nos moleste) adjuntar búferes a la superficie en el paso (2).- Implementar
window_surface
interfaz con el controlador de Wayland. Mientras tanto, proponemos un simple (y subóptimo)window_surface_flush
implementación: por cada flash creamos uno nuevowl_shm
portapapeles, copie todo el contenido de la ventana en él (ignorando los bordes rotos) y adjúntelo a la superficie de destino de Wayland. En el próximo MR, optimizaré esta implementación de varias maneras: a. implementar una cola de búfer para evitar la asignación constante de nuevos búfer b. respetar los límites dañadoswindow_surface
minimizar la copia de datos dewindow_surface
al búfer SHM (también para corrección) c. pase las áreas de superficie dañadas al compositor para (potencialmente) cargar texturas de manera más eficiente.
Con este trabajo, muchas aplicaciones renderizadas por el software ahora pueden mostrar contenido dinámico en la pantalla usando Wayland, pero aún no puedes interactuar con ellas. Pequeños pasos, pero es un proyecto de migración de X11 a Wayland bastante grande.
Para aquellos de ustedes que no entienden por qué esto es necesario: Wine actualmente necesita X11, por lo que si usa Wayland, ejecutará las cosas a través de XWayland (principalmente X se ejecuta bajo Wayland como una capa de compatibilidad). Esto lo complica y aumenta el número de formas de reducir el rendimiento. Obviamente, la situación ideal es cuando Wine y Wayland se comunican directamente, sin una capa intermedia adicional.
El resultado final significará que Wine se ejecutará en Wayland sin XWayland. Este trabajo debería estar en el próximo lanzamiento con Wine 8.12 el próximo fin de semana con sus lanzamientos de desarrollo habituales de dos semanas.