Mir es un código abierto y la tecnología de servidor de pantalla libre que ha sido diseñado desde cero para proporcionar un apoyo eficiente a coprocesadores gráficos en sistemas GNU / Linux. Es desarrollado por Canonical para el mundo y rsquo;. S más popular sistema operativo libre, Ubuntu
implementaciones de cliente y servidor
Mir se distribuye como tanto el cliente (libmirclient) y el servidor (libmirserver). Ha sido diseñado como una gota en el reemplazo para el sistema X Window (X.Org) en Ubuntu y sus derivados. También es compatible con los controladores de gráficos Android.
Los productos Mir y XMir se distribuirán de forma predeterminada en las próximas versiones del sistema operativo Ubuntu Linux desarrollada por Canonical. Es también el servidor de pantalla por defecto utilizado en la versión actual estable del sistema operativo móvil de Ubuntu táctil para la alimentación de los teléfonos inteligentes y tabletas.
Lo y rsquo; s incluido
Mir consta de varios componentes que son esenciales para cualquier servidor de pantalla moderna, como un compositor, director de entrada, gerente de salida, gestor de aplicaciones, así como la funcionalidad de intercambio de datos entre aplicaciones.
El software es de alguna manera idéntica en funcionalidad con y fuertemente inspirado por el servidor X.Org utilizado ampliamente pantalla, que se implementa actualmente en el 99,9% de todas las distribuciones de GNU / Linux, así como el servidor de pantalla Wayland nuevo.
Ha sido diseñado para soportar muchos de los compositores de hardware existentes, destinadas a EGL / GL (ES), y tomar ventaja de los controladores existentes que implementan el modelo de controlador Android.
En virtud de los sistemas operativos soportados y campana
El programa es independiente de la plataforma y escrito completamente en el lenguaje de programación C ++, diseñado para funcionar en sistemas GNU / Linux, BSD distribuciones, así como otras plataformas UNIX.
Se ha probado con éxito con las arquitecturas de 32 bits y del conjunto de instrucciones de 64 bits, y la última versión puede ser probado en la versión actual de Ubuntu Linux los sistemas operativos o por el acaparamiento de la última versión del código fuente de su repositorio oficial.
¿Qué hay de nuevo en esta versión:
- Mejoras:
- Se ha añadido una nueva herramienta 'mirvanity' que puede usar una cámara de video de alta velocidad para medir la latencia de cliente a la pantalla.
- Agregado (build-tiempo) el apoyo a los servidores de escritorio completa de OpenGL (desactivado por defecto en favor de GLESv2).
- Introducido nueva semántica de amortiguamiento (NBS) y activadas por defecto.
- evitado el uso de libmirserver en mir_demo_standalone_render_overlays, haciendo bringup traza menos desordenada.
- Se ha quitado del TilingWindowManager ejemplo servidores.
- añadieron dos nuevos MIR _ * _ herramientas performance_test que se ejecutan como parte de '' mir_performance_tests.
- Se añadió el enlace de confinamiento a la API del cliente.
- nueva plataforma Añadido soporte EGLStreams de software.
- Se ha agregado una plataforma de entrada que el servidor anidada puede utilizar.
- Permitir la configuración de la application_not_responding_detector
- configuración de teclado del lado del servidor usando la manija XKBMapper.
- Quitar la pantalla fuera de la pantalla.
- opción de devolución de llamada para notificar Añadir conchas que el servidor está a punto de detenerse.
- Añadir registro para eventos ANativeWindow en Android.
- Resumen ABI:
- mirclient ABI sin cambios en 9
- mirserver ABI dispara a 41
- mircommon ABI sin cambios en 6
- mirplatform ABI dispara a 12
- mirprotobuf ABI sin cambios en 3
- mirplatformgraphics ABI dispara a 10
- mirclientplatform ABI sin cambios en 5
- mirinputplatform ABI sin cambios en 5
¿Qué hay de nuevo en la versión 0.18.0:
- Gráficos:
- Trabajos de interior necesaria para Vulkan, hardware decodifica optimizaciones multimedia y mejoras de latencia para los servidores anidados.
- comenzó a trabajar en renders plugin. Esto preparará mejor a mir de la IO, donde puede ser que no tenga una pila Vulkan / GLES en el dispositivo, y podría tener que utilizar la CPU.
- Correcciones para la corrupción que afectan a los gráficos Xmir (barras negras en bloques)
- Varios arreglos para escenarios de varios monitores, así como un mejor soporte para la ampliación tampones para adaptarse al monitor de su encendido.
- Entrada:
- Utilice libinput por defecto. Habíamos estado apoyado en una versión antigua de la pila de entrada Android. Eliminar por completo esta a favor del uso libinput.
- Defectos:
- Toda una larga lista de corrección de errores. Algunos de ellos nunca fueron 'en la naturaleza ", pero existía en el curso del desarrollo 0.18.
¿Qué hay de nuevo en la versión 0.17.0:
- Resumen ABI: Sólo los servidores y controladores de gráficos necesitan ser reconstruidos;
- Mirclient ABI sin cambios en 9
- Mirserver ABI dispara a 35
- Mircommon ABI sin cambios en 5
- Mirplatform ABI dispara a 11
- Mirprotobuf ABI dispara a 3
- Mirplatformgraphics ABI dispara a 6
- Mirclientplatform ABI sin cambios en 3
- Mejoras:
- Introducir libmircookie, un mecanismo sencillo para un grupo de procesos que cooperan para entregar y verificar difíciles de falsificar marcas de tiempo a 3 partes no son de confianza.
- Más refactorizaciones para apoyar la extracción de grasas distintos de los GL.
- Añadir MirBlob a la API del cliente -. Una herramienta para serializar y deserializar los datos
- Introducir una plataforma de entrada basada libinput, sin embargo, no se utiliza de forma predeterminada.
- Proporcionar un mecanismo para la carcasa para enviar eventos en la construcción de la superficie.
- Proporcionar MIR :: :: cáscara DisplayConfigurationController permitiendo conchas para cambiar correctamente la configuración de pantalla, notificando a los clientes según el caso.
- Nueva DSO guía de versiones.
- Enviar eventos relacionados con la salida de una superficie se encuentra actualmente en (dpi, factor de forma, escala) a los clientes.
- Corrección de errores:
- [Realce] XMir documentación específica debe vivir en su propia subsección (LP: # 1200114)
- servidores anidados necesitan apoyo del cursor (LP: # 1289072)
- Mir cursor está faltante / invisible hasta que el cliente establece varias veces (LP: # 1308133)
- [regresión] superficies de software de pantalla completa (como Xmir -sw) puede bloquear el servidor Mir (LP: # 1493721)
- [USC] Mir da por vencido y se apaga debido a la entrada con varios monitores qtmir (std :: excepción :: ¿qué: error en el envío de eventos de entrada) (LP: # 1496069)
- El cursor del ratón desaparece al entrar en la superficie de un cliente anidado (LP: # 1496849)
- [Android] de entrada no se distribuye al conectar un monitor externo (LP: # 1498045)
- [Android] coordenadas de entrada se escalan de forma incorrecta cuando se conecta una pantalla externa (LP: # 1498540)
- [Android] std :: excepción :: ¿qué: error durante la configuración hwc () para extraer el conector de monitor externo (LP: # 1498550)
- pruebas no compilan sin encabezados precompilados (LP: # 1498829)
- [Android] std :: excepción :: ¿qué: no se pudo controlar fd: Operación no permitida para extraer el conector de visualización externo en una configuración anidada (LP: # 1499042)
- Mir de pronto ya no se construye desde 'mesa (11.0.
0-1ubuntu1) astuto ': /usr/include/EGL/eglplatform.h:100:35: error fatal: androide / native_window.h: No existe el fichero o directorio (LP: # 1499134)
- [Android] varios accidentes Antes de desconectar un monitor externo en una configuración encajada (LP: # 1501927)
- El cursor se hace visible por sí mismo cuando se conecta un monitor externo (LP: # 1502200)
- Mesa FTBFS debido a la falta Requiere en mirclient (LP: # 1503450)
¿Qué hay de nuevo en la versión 0.13.3:
- MirEvent limpieza
- Continúa en cambios semánticos de amortiguamiento (que le ayudará derivación anidado)
- & quot; La aplicación no responde & quot; propuesta sucursal
- Mir-on-X rama propuso
- Continúa el trabajo de reelaboración QtMir utilizar la interfaz de WM en el MIR
- Continúa la coordinación con la corriente en cambios libinput propusimos
- API de la plataforma con el código de Mir en desuso eliminado en el proceso de aterrizaje
- comenzado una aplicación framework de pruebas Potencia basado en Python
- comenzado a evaluar API Vulkan / WSI
- Fijos fugas fd en algunas pruebas
- Soporte de doble búfer
¿Qué hay de nuevo en la versión 0.11.0:
- cambios de embalaje:
- Debido a los cambios en el modelo de controlador Mir las plataformas de cliente ya no están versionadas por soname. Thusly libmirplatform5driver- (mesa | androide) se sustituye por MIR-cliente-plataforma- (mesa-androide). Se introduce un nuevo paquete MIR-cliente-plataforma-mesa-dev contiene encabezados previamente en mirplatform-dev.
- Mejoras:
- Mucho más importante de plomería en el código de Android, en el camino hacia el apoyo a pantallas externas.
- Añadir soporte para sonido metálico 3.6.
- Mayor rediseño de las clases de servidor en el MIR :: cáscara, escena y amigos (aún en curso).
- Añadido API del cliente para la creación de cuadros de diálogo e información sobre herramientas.
- Se han añadido nuevos estados de la superficie:. Mir_surface_state_hidden y mir_surface_state_horizmaximized
- Rendimiento:. Usar el sombreado fragmento óptimamente eficiente cuando es posible
- Rendimiento:. (Escritorio) Compuesto usando el doble búfer en lugar de triples para reducir el retraso visible
- mir_proving_server: Ahora se puede cambiar el tamaño de las ventanas de cualquier borde o una esquina utilizando el Alt + middlebuttondrag existente .
- mir_proving_server: Añadido algunos shaders personalizados de demostración (modos negativa y de alto contraste: Super + N / C) .
- mir_proving_server:. Ahora puede cerrar la cortésmente clientes a través de Alt + F4
- Agregado MirPointerInputEvent (parte de la nueva API de entrada, el antiguo MirMotionEvent todavía se soporta también por ahora).
- Resumen: ABI servidores necesitan reconstrucción, pero los clientes no lo hacen; . Mirclient ABI sin cambios a las 8. Mircommon ABI sin cambios en el 3. Mirplatform ABI dispara a 6. Mirserver ABI dispara a 29
- Corrección de errores:
- [regresión] mir_demo_server sale inmediatamente con excepción impulso bad_any_cast (LP: # 1414630)
- ¿Necesita manera de menús e información sobre herramientas de posición (posicionamiento en relación con los padres) (LP: # 1324101)
- insuficiencia GLibMainLoopTest visto en CI (LP: # 1413748)
- Sonido metálico construye fallar en CI (LP: # 1416317)
- segfault in mir :: :: compositor GLProgramFamily :: Shader :: init () (LP: # 1416482)
- GLRenderer: El fragmento de sombreado por defecto es sub-óptimo para alfa = 1.
0 (LP: # 1350674)
- Mesa :: :: DisplayBuffer post_update es el triple buffer - lag más de lo que debe ser (LP: # 1350725)
- No se puede conectar con el servidor anidado cuando se arranca desde un vt diferen (LP: # 1379266)
- [testfail] falla AsioMainLoopAlarmTest en CI (LP: # 1392256)
- informe Compositor incompatible informa marco de tiempo durante el bypass, y el tiempo de renderización de otro modo (LP: # 1408906)
- [regresión] mir_demo_client_fingerpaint no pinta nada más (con el ratón) (LP: # 1413139)
- cursor de hardware es siempre un poco por delante de la imagen compuesta (LP: # 1274408)
- pruebas de integración está dando salida (demasiados) DisplayServer mensajes (LP: # 1408231) log
- [regresión] deploy-and-test.sh no trabajar más (a menos que tenga umockdev instalado ya) (LP: # 1413479)
- color inverso en la pantalla. Cambiar la imagen negativa (LP: # 1400580)
- MIR-ubuntu-viva-ci-armhf falla constantemente (LP: # 1407863)
- superficies de doble memoria intermedia pueden retrasos o bloqueos si el evento impulsado y no volver a dibujar constantemente (LP: # 1395581)
- movimiento del puntero y de cruce faltan (LP: # 1417650)
eventos
¿Qué hay de nuevo en la versión 0.8:
- Soporte para touchspots visualmente mostrar las ubicaciones de toque en la pantalla, aunque sea a costa de rendimiento.
- Mir clientes ahora pueden exponer información de rendimiento como velocidades de cuadro y los tiempos de render a través de establecer la variable de entorno MIR_CLIENT_PERF_REPORT = log para volcar la información sobre el rendimiento en la salida estándar.
- Menos sensibilidad a las pausas ABI al ocultar los encabezados de la exposición que han sido operada por proyectos externos, etc. También hay más scripts ahora para detectar la rotura de ABI.
- Más mejoras para tocar la capacidad de respuesta -. Incluyendo menos retraso y el desplazamiento más suave
- superposiciones de hardware están activadas de forma predeterminada.
- Un gran número de correcciones de errores.
¿Qué hay de nuevo en la versión 0.1.2:
- gráficos: android:. Mejorar la interfaz para mga :: DisplayDevice por lo que su sólo se preocupa con renderizado y contabilización
- superficies: cambiar el nombre de & quot; & quot; superficies componente a & quot; escena & quot;.
- superficies, shell: Migración de Sesión modelo de datos de la cáscara a las superficies .
- gráficos: el cambio fill_ipc_package () utilicen indicadores reales .
- mir_client_library.h: Fix error tipográfico & quot; hacer y bloqueo de & quot; debe ser & quot; hace ningún bloqueo & quot;.
- API de limpieza: Quitar un poco engañoso * Valores _enum_max_, y reemplazarlos con formas plurales más precisos .
- test_android_communication_package:. No hay que esperar fd abierto para ser & gt; 0, podemos tener la entrada estándar cerrado haciendo de este un valor válido (LP: # 1247718)
- Actualizar documentos acerca de la ejecución de Mir en el escritorio por mencionar nuevo paquete ubuntu-desktop-mir.
- fuera de la pantalla: Añadir una pantalla que hace que su salida a tampones fuera de pantalla
- gráficos: android: fijar regresión para dispositivos hwc1.0 introducidas en r1228 (LP: # 1252433) .
- OffscreenPlatform ofrece los servicios que necesita la pantalla fuera de la pantalla de la plataforma.
- gráficos: android:. Consolidar las clases GLContexts en uso
- Fijar variable no inicializada causando fallos en la prueba drm_auth_magic al azar. (LP: # 1252144).
- Añadir un envoltorio Udev funcional fullyish. Esto actualmente se encuentra en los gráficos / GBM, pero se trasladó a la de nivel superior cuando se migra de detección de dispositivos de entrada.
- Añadir cambiar el tamaño de apoyo a ejemplo de código; Demo-shell y los clientes.
- eglapp: Aclarar mensajes acerca de formatos de píxeles (LP: # 1168304).
- Añade soporte a la MirMotionEvent bajo pointer_coordinates llamados tool_type. Esto permitirá a los clientes dicen qué tipo de herramienta se está utilizando, de ratón / dedo / etc. (LP: # 1252498)
- cliente, frontend: Informar de los formatos disponibles reales de píxel superficie a los clientes. (LP: # 1240833)
- gráficos androide: 1) el cambio hwc1.1 para hacer uso de vallas de sincronización durante renderloop gl del compositor. Tenga en cuenta que ya no esperamos a que el render para completar, se pasa la responsabilidad al conductor y el núcleo. 2) el apoyo nexo 10. (LP: # 1252173) (LP: # 1203268)
- shell: no publique SurfacesContainer - que puede ser privada de shell .
- GBM:. No se metan hasta el modo de VT en caso de fallo de configuración Sólo restaurar el modo VT anterior durante el apagado si era VT_AUTO
- Fijar un accidente debido a una llamada fallida eglMakeCurrent () en el modo anidado.
- shell: unidad-mir utiliza la cáscara :: FocusSetter - hacer público el nuevo encabezado
- Añadir soporte de cambio de tamaño para superficies cliente (MIR :: :: MirSurface cliente).
- gráficos: android: apoyo "viejo conocido como 2012 'Nexus 7 hwc (SoC NVIDIA tegra3) mejor. (LP: # 1231917)
- Añadir cambiar el tamaño de apoyo a las clases * ClientBuffer. Ahora siempre obtener las dimensiones del último paquete de amortiguación.
- android: ganchos de controladores de apoyo para el Mali T604 (presentes en Nexus 10)
- Añadir anchura y la altura de los mensajes del búfer de protocolo, en la preparación de superficies de tamaño variable.
- superficies, la cáscara, la tala, las pruebas: no publique cabeceras que se pueden privada a las superficies. superficies / basic_surface.h, superficies / surface_controller.h y shell / surface_builder.h
- ejemplos: Restaurar la unión al destruir el objetivo de hacer uso de este dispositivo GL
- ejemplos, superficies, shell: eliminar la dependencia render_surfaces en BasicSurface
- geometría: eliminar la aplicación de los operadores de transmisión de cabeceras (LP: # 1247820)
- Elimina la secuencia enfoque orden de inscripción, doblando su funcionalidad en el contenedor de sesión.
- Asegúrese de que los comunicados de sesión de mediador adquiridos recursos memoria intermedia antes de intentar adquirir un nuevo buffer en nombre del cliente.Esto soluciona el rendimiento de regresión (LP: # 1249210).
- Algunas limpiezas a test_client_input.cpp.
- factorizar un montón de & quot; ClientConfigCommon & quot;.
- Pequeño limpieza para contenedor de prueba de sesiones para aumentar la encapsulación.
- cáscara, superficies: Otro paso en & quot; la fijación de & quot; las jerarquías de superficies -. sólo publican las interfaces y poner el modelo de datos en superficies
- gráficos: android:. HWC1.1 uso EGL para obtener más información sobre el formato de píxel uso de este dispositivo
- Fix FTBS usando use_debflags = ON (edificio para android-armhf). (LP: # 1248014)
- Añadir un informe receptor de entrada del cliente.
- doc: doxygen 1.8.4 se queja de una configuración obsoleta por lo que corrió & quot; doxygen u Doxyfile.in & quot; .
- Implementar cambio de tamaño () para las clases del lado del servidor de superficie.
- android: limpiar mga :: DisplayBuffer y mga :: DisplayBufferFactory
- Añadir cambio de tamaño () apoyo a BufferStream, en la preparación de superficies de tamaño variable.
- Combinar metadatos cambios desde el lp recientemente reconstruido: mir
- pruebas: Deduplique talones mg :: GraphicBufferAllocator .
- ejemplos: Eliminar el uso espurio de mir / cáscara / surface.h.
- frontend: eliminar ClientTrackingSurface de la jerarquía de clases de superficie
- Los golpes ABI en el servidor de libmirserver11.
- No hay de & quot; & quot ;. renderable Esa interfaz no ha existido desde hace bastante tiempo.
- android-entrada:. Asignar identificadores de toque más singulares
enumeraciones
¿Qué hay de nuevo en la versión 0.1.1:
- Las nuevas pruebas de unidad, varios arreglos para evitar la publicación interna cabeceras, ayuda para especificar el nombre del servidor Mir anidados ya sea a través de un --name = argumento o la variable de entorno MIR_SERVER_NAME, refactorización de las clases de visualización Mir Android, y un primer paso hacia la prestación de cambiar el tamaño de la superficie de apoyo.
Comentarios que no se encuentran