Mir

Software Screenshot:
Mir
Software Details:
Version: 0.24.0 updated
Upload Date: 5 Sep 16
Developer: Canonical Ltd.
Distribution Type: Freeware
Downloads: 224

Rating: 1.7/5 (Total Votes: 3)

Mir is an open source and free display server technology that has been designed from the ground up to provide efficient support for graphics co-processors on GNU/Linux systems. It is developed by Canonical for the world’s most popular free operating system, Ubuntu.

Client and server implementations

Mir is distributed as both client (libmirclient) and server (libmirserver). It has been designed as a drop-in replacement for the X Window System (X.Org) on Ubuntu and its derivatives. It is also compatible with the Android graphics drivers.

The Mir and XMir products will be distributed by default on upcoming releases of the Ubuntu Linux operating system developed by Canonical. It is also the default display server used on the current stable release of the Ubuntu Touch mobile operating system for powering smartphones and tablets.

What’s included

Mir comprises of several components that are essential for any modern display server, such as a compositor, input manager, output manager, application manager, as well as inter-app data exchange functionality.

The software is somehow identical in functionality with and heavily inspired by the widely used X.Org display server, which is currently implemented in 99.9% of all GNU/Linux distributions, as well as the brand-new Wayland display server.

It has been engineered to support many of the existing hardware compositors, designed towards EGL/GL(ES), and take advantage of existing drivers that implement the Android driver model.

Under the hood and supported operating systems

The program is platform-independent and written entirely in the C++ programming language, designed to run on GNU/Linux systems, BSD distributions, as well as other UNIX-like platforms.

It has been successfully tested with both 32-bit and 64-bit instruction set architectures, and the latest version can be tested on the current release of the Ubuntu Linux operating systems or by grabbing the latest source code from its official repository.

What is new in this release:

  • Enhancements:
  • Added a new tool 'mirvanity' which can use a high speed video camera to measure client-to-screen latency.
  • Added (build-time) support for desktop full OpenGL servers (disabled by default in favor of GLESv2).
  • Introduced new buffer semantics (NBS) and enabled it by default.
  • Avoided using libmirserver in mir_demo_standalone_render_overlays, making bringup traces less cluttered.
  • Removed TilingWindowManager from example servers.
  • Added two new mir_*_performance_test tools that are run as part of 'mir_performance_tests'.
  • Added pointer confinement to the client API.
  • Added new platform supporting software EGLStreams.
  • Added an input platform that the nested server can use.
  • Allow configuration of the application_not_responding_detector
  • Handle server-side keymapping using XKBMapper.
  • Remove the offscreen display.
  • Add callback option to notify shells that the server is about to stop.
  • Add logging for ANativeWindow events on Android.
  • ABI summary:
  • mirclient ABI unchanged at 9
  • mirserver ABI bumped to 41
  • mircommon ABI unchanged at 6
  • mirplatform ABI bumped to 12
  • mirprotobuf ABI unchanged at 3
  • mirplatformgraphics ABI bumped to 10
  • mirclientplatform ABI unchanged at 5
  • mirinputplatform ABI unchanged at 5

What is new in version 0.18.0:

  • Graphics:
  • Internal preparation work needed for Vulkan, hardware decoded multimedia optimizations, and latency improvements for nested servers.
  • Started work on plugin renderers. This will better prepare mir for IoT, where we might not have a Vulkan/GLES stack on the device, and might have to use the CPU.
  • Fixes for graphics corruption affecting Xmir (blocky black bars)
  • Various fixes for multimonitor scenarios, as well as better support for scaling buffers to suit the the monitor its on.
  • Input:
  • Use libinput by default. We had been leaning on an old version of the Android input stack. Completely remove this in favor of using libinput.
  • Bugs:
  • Quite a long list of bug correction. Some of these were never ‘in the wild' but existed in the course of 0.18 development.

What is new in version 0.17.0:

  • ABI summary: Only servers and graphics drivers need rebuilding;
  • Mirclient ABI unchanged at 9
  • Mirserver ABI bumped to 35
  • Mircommon ABI unchanged at 5
  • Mirplatform ABI bumped to 11
  • Mirprotobuf ABI bumped to 3
  • Mirplatformgraphics ABI bumped to 6
  • Mirclientplatform ABI unchanged at 3
  • Enhancements:
  • Introduce libmircookie, a simple mechanism for a group of cooperating processes to hand out and verify difficult-to-forge timestamps to untrusted 3rd parties.
  • More refactorings to support renderers other than GL.
  • Add MirBlob to the client API - a tool for serializing and deserializing data.
  • Introduce a libinput based input platform, not yet used by default.
  • Provide a mechanism for the shell to send events on surface construction.
  • Provide mir::shell::DisplayConfigurationController allowing shells to correctly change the display configuration, notifying clients as appropriate.
  • New DSO versioning guide.
  • Send events pertaining to the output a surface is currently on (dpi, form factor, scale) to clients.
  • Bug fixes:
  • [enhancement] XMir specific documentation should live in its own subsection (LP: #1200114)
  • Nested servers need cursor support (LP: #1289072)
  • Mir cursor is missing/invisible until the client sets it multiple times (LP: #1308133)
  • [regression] Fullscreen software surfaces (like Xmir -sw) can crash the Mir server (LP: #1493721)
  • [usc] Mir gives up and shuts down due to input with multimonitor qtmir (std::exception::what: Failure sending input event) (LP: #1496069)
  • Mouse cursor disappears upon entering the surface area of a nested client (LP: #1496849)
  • [android] input is not dispatched when attaching an external monitor (LP: #1498045)
  • [android] input coordinates are scaled incorrectly when an external display is connected (LP: #1498540)
  • [android] std::exception::what: error during hwc set() when unplugging external monitor (LP: #1498550)
  • tests do not compile without precompiled headers (LP: #1498829)
  • [android] std::exception::what: Failed to monitor fd: Operation not permitted when unplugging external display in a nested configuration (LP: #1499042)
  • Mir suddenly no longer builds since 'mesa (11.0.0-1ubuntu1) wily': /usr/include/EGL/eglplatform.h:100:35: fatal error: android/native_window.h: No such file or directory (LP: #1499134)
  • [android] various crashes when unplugging external display on a nested configuration (LP: #1501927)
  • Cursor becomes visible by itself when an external monitor is connected (LP: #1502200)
  • mesa FTBFS due to missing Requires in mirclient (LP: #1503450)

What is new in version 0.13.3:

  • MirEvent cleanup
  • Continued on buffer semantic changes (that will help nested bypass)
  • "Application not responding" branch proposed
  • Mir-on-X branch proposed
  • Continued work on reworking QtMir to use the WM interface in Mir
  • Continued coordinating with upstream on libinput changes we proposed
  • Platform api with deprecated Mir code removed in process of landing
  • Started a python-based perf test framework implementation
  • Started evaluating Vulkan/WSI API
  • Fixed fd leaks in some tests
  • Double-buffering support

What is new in version 0.11.0:

  • Packaging changes:
  • Due to changes in the Mir driver model the client platforms are no longer versioned by soname. Thusly libmirplatform5driver-(mesa|android) is replaced by mir-client-platform-(mesa-android). A new package mir-client-platform-mesa-dev is introduced containing headers previously in mirplatform-dev.
  • Enhancements:
  • Lots more major plumbing in the Android code, on the path to supporting external displays.
  • Add support for clang 3.6.
  • Major redesign of server classes in mir::shell,scene and friends (still in progress).
  • Added client API for creating dialogs and tooltips.
  • Added new surface states: mir_surface_state_hidden and mir_surface_state_horizmaximized.
  • Performance: Use optimally efficient fragment shading when possible.
  • Performance: (Desktop) Composite using double buffering instead of triple to reduce visible lag.
  • mir_proving_server: Can now resize windows from any edge or corner using the existing Alt+middlebuttondrag.
  • mir_proving_server: Added some demo custom shaders (negative and high contrast modes: Super+N/C).
  • mir_proving_server: Can now close clients politely via Alt+F4.
  • Added MirPointerInputEvent (part of the new input API, the old MirMotionEvent is still supported also for now).
  • ABI summary: Servers need rebuilding, but clients do not; . Mirclient ABI unchanged at 8 . Mircommon ABI unchanged at 3 . Mirplatform ABI bumped to 6 . Mirserver ABI bumped to 29
  • Bug fixes:
  • [regression] mir_demo_server exits immediately with boost bad_any_cast exception (LP: #1414630)
  • need way to position menus and tooltips (relative positioning to parent) (LP: #1324101)
  • GLibMainLoopTest failure seen in CI (LP: #1413748)
  • Clang builds fail in CI (LP: #1416317)
  • segfault in mir::compositor::GLProgramFamily::Shader::init() (LP: #1416482)
  • GLRenderer: The default fragment shader is sub-optimal for alpha=1.0 (LP: #1350674)
  • mesa::DisplayBuffer::post_update is triple buffered - more laggy than it needs to be (LP: #1350725)
  • Cannot connect to nested server when started from a differen vt (LP: #1379266)
  • [testfail] AsioMainLoopAlarmTest fails in CI (LP: #1392256)
  • Compositor report inconsistently reports frame time during bypass, and render time otherwise (LP: #1408906)
  • [regression] mir_demo_client_fingerpaint doesn't paint anything any more (with the mouse) (LP: #1413139)
  • Hardware cursor is always slightly ahead of the composited image (LP: #1274408)
  • integration tests are outputting (too many) DisplayServer log messages (LP: #1408231)
  • [regression] deploy-and-test.sh doesn't work any more (unless you have umockdev installed already) (LP: #1413479)
  • Color Inverse on display. Toggle Negative Image (LP: #1400580)
  • mir-ubuntu-vivid-armhf-ci fails consistently (LP: #1407863)
  • Double-buffered surfaces may lag or freeze if event driven and not constantly redrawing (LP: #1395581)
  • Pointer motion and crossing events are missing (LP: #1417650)

What is new in version 0.8:

  • Support for touchspots to visually show touch locations on the screen, albeit at the cost of performance.
  • Mir clients can now expose performance information like frame rates and render times via setting the MIR_CLIENT_PERF_REPORT=log environment variable to dump the performance information to the standard output.
  • Less sensitivity to ABI breaks by hiding headers from being exposed that have been unused by external projects, etc. There's also more scripts now to detect ABI breakage.
  • More improvements to touch responsiveness -- including less lag and smoother scrolling.
  • Hardware overlays are now enabled by default.
  • A large number of bug-fixes.

What is new in version 0.1.2:

  • graphics: android: improve interface for mga::DisplayDevice so its just concerned with rendering and posting.
  • surfaces: rename "surfaces" component to "scene".
  • surfaces, shell: Migrate Session data model from shell to surfaces.
  • graphics: change fill_ipc_package() to use real pointers.
  • mir_client_library.h: Fix typo "do and locking" should be "do any locking".
  • API enumerations cleanup: Remove slightly misleading *_enum_max_ values, and replace them with more accurate plural forms.
  • test_android_communication_package: Do not expect opened fd to be >0, we may have closed stdin making this a valid value (LP: #1247718).
  • Update docs about running Mir on the desktop to mention new package ubuntu-desktop-mir.
  • offscreen: Add a display that renders its output to offscreen buffers
  • graphics: android: fix regression for hwc1.0 devices introduced in r1228 (LP: #1252433).
  • OffscreenPlatform provides the services that the offscreen display needs from the Platform.
  • graphics: android: consolidate the GLContexts classes in use.
  • Fix uninitialized variable causing random drm_auth_magic test failures. (LP: #1252144).
  • Add a fullyish functional Udev wrapper. This currently sits in graphics/gbm, but will be moved to the top-level when input device detection migrates.
  • Add resizing support to example code; demo-shell and clients.
  • eglapp: Clarify messages about pixel formats (LP: #1168304).
  • Adds support to the MirMotionEvent under pointer_coordinates called tool_type. This will allow clients to tell what type of tool is being used, from mouse/finger/etc. (LP: #1252498)
  • client,frontend: Report the real available surface pixel formats to clients. (LP: #1240833)
  • graphics: android: 1) change hwc1.1 to make use of sync fences during the compositor's gl renderloop. Note that we no longer wait for the render to complete, we pass this responsibility to the driver and the kernel. 2) support nexus 10. (LP: #1252173) (LP: #1203268)
  • shell: don't publish SurfacesContainer - it can be private to shell.
  • gbm: Don't mess up the VT mode on setup failure Only restore the previous VT mode during shutdown if it was VT_AUTO.
  • Fix a crash due to a failed eglMakeCurrent() call when in nested mode.
  • shell: unity-mir uses shell::FocusSetter - make the header public again
  • Add resize support to client surfaces (mir::client::MirSurface).
  • graphics: android: support 'old aka 2012' nexus 7 hwc (nvidia tegra3 SoC) better. (LP: #1231917)
  • Add resize support to *ClientBuffer classes. Now always get dimensions from the latest buffer package.
  • android: support driver hooks for the Mali T604 (present in nexus 10)
  • Add width and height to the protocol Buffer messages, in preparation for resizable surfaces.
  • surfaces, shell, logging, tests: don't publish headers that can be private to surfaces. surfaces/basic_surface.h, surfaces/surface_controller.h and shell/surface_builder.h
  • examples: Restore GL framebuffer binding when destroying the render target
  • examples, surfaces, shell: remove render_surfaces dependency on BasicSurface
  • geometry: remove implementation of streaming operators from headers (LP: #1247820)
  • Eliminate the registration order focus sequence, folding it's functionality in to the session container.
  • Ensure the session mediator releases acquired buffer resources before attempting to acquire a new buffer on behalf of the client. This fixes performance regression (LP: #1249210).
  • Some cleanups to test_client_input.cpp.
  • Factor out a bunch of "ClientConfigCommon".
  • Small cleanup to session container test to increase encapsulation.
  • shell, surfaces: Another step in "fixing" the surfaces hierarchies - only publish interfaces and putting the data model into surfaces.
  • graphics: android: HWC1.1 use EGL to get further information about the framebuffer pixel format.
  • Fix FTBS using use_debflags=ON (building for android-armhf). (LP: #1248014)
  • Add a client input receiver report.
  • doc: doxygen 1.8.4 complains about an obsolete config so ran "doxygen u Doxyfile.in".
  • Implement resize() for the server-side Surface classes.
  • android: clean up mga::DisplayBuffer and mga::DisplayBufferFactory
  • Add resize() support to BufferStream, in preparation for resizable surfaces.
  • Merge metadata changes from the newly reconstructed lp:mir
  • tests: Deduplicate mg::GraphicBufferAllocator stubs.
  • examples: Remove spurious use of mir/shell/surface.h.
  • frontend: remove ClientTrackingSurface from the Surface class hierarchy
  • Bumping ABI on server to libmirserver11.
  • Don't mention "Renderable". That interface hasn't existed for quite some time now.
  • android-input: Assign more unique touch ids.

What is new in version 0.1.1:

  • New unit tests, various fixes to avoid publishing internal headers, support for specifying the Mir nested server name either via a --name= argument or the MIR_SERVER_NAME environment variable, refactoring of the Mir Android display classes, and a first step towards providing surface resize support.

Other Software of Developer Canonical Ltd.

Ubuntu Core
Ubuntu Core

9 Dec 15

Edubuntu
Edubuntu

3 Jun 15

Ubuntu MID
Ubuntu MID

3 Jun 15

Comments to Mir

Comments not found
Add Comment
Turn on images!