No description
Find a file
2025-06-17 08:12:12 +00:00
tests Update drm references to use correct path (libdrm, not drm). 2025-06-17 00:35:09 +05:00
.gitignore Add .gitignore 2025-06-13 01:50:40 +00:00
12to11-test.xml Fix dispatch of leave events with built-in move 2022-11-24 02:23:11 +00:00
12to11.c Add tearing control protocol 2022-11-19 06:36:56 +00:00
12to11.conf default to building with egl renderer 2025-06-17 08:12:12 +00:00
12to11.man Fully implement tearing control 2022-11-24 06:12:06 +00:00
alloc.c Implement support for zwp_text_input_manager_v3 2022-10-06 02:09:36 +00:00
atoms.c Implement xdg-activation-v1 2022-11-14 06:05:23 +00:00
buffer.c Update subsurface tests to handle reparenting and fix discovered bugs 2022-11-15 04:26:36 +00:00
buffer_release.c Check in C and XML files for tests 2022-11-04 02:25:44 +00:00
compositor.c Check in changes to core files used for tests 2022-11-04 02:39:50 +00:00
compositor.h Fully implement tearing control 2022-11-24 06:12:06 +00:00
COPYING ; * COPYING: Check in new file. 2022-10-20 04:15:16 +00:00
data_device.c Fix text input bugs with grabbed popups and bugs found by new tests 2022-11-12 03:51:21 +00:00
decoration.c Check in files for XDG decoration support 2022-09-30 07:34:55 +00:00
dmabuf.c Fix compatibility with Chromium 2022-11-18 13:11:22 +00:00
dnd.c Fix bugs discovered by static analyzers and fix buffer damage calculation 2022-10-17 04:44:49 +00:00
drm-lease-v1.xml Update files for DRM leasing 2022-10-12 12:22:39 +00:00
drm_lease.c Fix some comments 2022-11-14 01:12:49 +00:00
egl.c egl: fix EGL crash on nvidia (createPlatformWindowSurface fail) 2025-06-16 22:31:14 +02:00
ewmh.c Import files 2022-09-12 13:24:50 +00:00
explicit_synchronization.c Fix various problems encountered 2022-10-22 07:13:21 +00:00
fence_ring.c Rework subcompositor damage culling and use a back buffer in the pict renderer 2022-10-29 05:21:35 +00:00
fns.c Add some initial wrapping for ports 2022-11-05 13:31:32 +00:00
frame_clock.c Major refactoring of the frame clock code 2022-11-22 10:57:50 +00:00
icon_surface.c Major refactoring of the frame clock code 2022-11-22 10:57:50 +00:00
idle-inhibit-unstable-v1.xml Check in files for idle inhibition 2022-10-22 04:43:14 +00:00
idle_inhibit.c Improve handling of pointer unlock events 2022-11-13 11:18:44 +00:00
Imakefile Major refactoring of the frame clock code 2022-11-22 10:57:50 +00:00
keyboard-shortcuts-inhibit-unstable-v1.xml Check in files for keyboard shortcut inhibition 2022-10-18 05:21:33 +00:00
keyboard_shortcuts_inhibit.c Check in files for keyboard shortcut inhibition 2022-10-18 05:21:33 +00:00
linux-dmabuf-unstable-v1.xml Update subsurface tests to handle reparenting and fix discovered bugs 2022-11-15 04:26:36 +00:00
linux-explicit-synchronization-unstable-v1.xml Check in new files for explicit synchronization 2022-09-25 08:13:27 +00:00
media_types.txt Import files 2022-09-12 13:24:50 +00:00
mime0.awk Add new damage test and unify buffer release code in xdg_surface 2022-11-04 05:36:10 +00:00
mime1.awk Add new damage test and unify buffer release code in xdg_surface 2022-11-04 05:36:10 +00:00
mime2.awk Add new damage test and unify buffer release code in xdg_surface 2022-11-04 05:36:10 +00:00
mime3.awk Add new damage test and unify buffer release code in xdg_surface 2022-11-04 05:36:10 +00:00
mime4.awk Add new damage test and unify buffer release code in xdg_surface 2022-11-04 05:36:10 +00:00
modifiers.awk Check in new file for generating modifier list 2022-10-26 06:44:31 +00:00
output.c wl_output: fix incorrect version check for name callback 2025-06-17 00:35:09 +05:00
picture_renderer.c Fully implement tearing control 2022-11-24 06:12:06 +00:00
pointer-constraints-unstable-v1.xml Check in new files for pointer constraint support 2022-10-15 07:47:44 +00:00
pointer-gestures-unstable-v1.xml Check in new files for pointer gestures 2022-11-01 10:56:52 +00:00
pointer_constraints.c Implement keyboard shortcut inhibition 2022-10-18 05:35:52 +00:00
pointer_gestures.c Check in new files for pointer gestures 2022-11-01 10:56:52 +00:00
port_gnu.h * port_gnu.h: New file. 2022-11-05 13:29:25 +00:00
positioner.c Fix xdg-positioner implementation 2022-11-14 10:26:58 +00:00
primary-selection-unstable-v1.xml Check in new files for primary selection support 2022-09-13 11:33:57 +00:00
primary_selection.c Improve serial wraparound checking 2022-11-11 11:16:01 +00:00
process.c Fix frame timing prediction algorithm 2022-10-24 03:45:57 +00:00
README * README: Add updates. 2022-11-24 06:13:19 +00:00
region.c Import files 2022-09-12 13:24:50 +00:00
relative-pointer-unstable-v1.xml Check in files for relative pointer support 2022-10-16 11:31:56 +00:00
relative_pointer.c Fix calculation of microsecond time in relative pointer events 2022-10-20 12:44:59 +00:00
renderer.c Major refactoring of the frame clock code 2022-11-22 10:57:50 +00:00
run.c Better handle X server out-of-memory situations 2022-11-08 03:37:37 +00:00
seat.c Fix dispatch of leave events with built-in move 2022-11-24 02:23:11 +00:00
select.c Fix handling of MULTIPLE selections and add test 2022-11-12 08:07:43 +00:00
shaders.awk Check in new files for EGL support 2022-09-23 08:28:48 +00:00
shaders.txt Fix precision of vertex shader 2022-11-17 06:07:30 +00:00
shm.c Better handle X server out-of-memory situations 2022-11-08 03:37:37 +00:00
single-pixel-buffer-v1.xml Check in files for single pixel buffer support 2022-10-06 10:42:20 +00:00
single_pixel_buffer.c ; * single_pixel_buffer.c (CreateU32RgbaBuffer): Fix typo. 2022-10-06 10:47:13 +00:00
subcompositor.c Major refactoring of the frame clock code 2022-11-22 10:57:50 +00:00
subsurface.c Fix crashes during scale changes 2022-11-15 12:17:26 +00:00
surface.c Add tearing control protocol 2022-11-19 06:36:56 +00:00
svnignore.txt Allow the user to manually specify format modifiers 2022-10-26 06:48:59 +00:00
sync_source.c Fully implement tearing control 2022-11-24 06:12:06 +00:00
tearing-control-v1.xml Check in new files for tearing control protocol 2022-11-19 06:28:50 +00:00
tearing_control.c Check in new files for tearing control protocol 2022-11-19 06:28:50 +00:00
test.c Fix dispatch of leave events with built-in move 2022-11-24 02:23:11 +00:00
test_seat.c Add new seat tests for key presses 2022-11-16 02:15:47 +00:00
text-input-unstable-v3.xml Check in files for text input support 2022-10-06 02:03:29 +00:00
text_input.c Pacify more compiler warnings 2022-11-17 02:45:33 +00:00
time.c Fix initialization of server time overflow timer 2022-11-08 11:49:43 +00:00
timer.c Import files 2022-09-12 13:24:50 +00:00
transform.c Fix and implement transforms in the EGL renderer 2022-10-30 09:51:54 +00:00
viewporter.xml Add files for viewporter support 2022-09-30 01:00:09 +00:00
wp_viewporter.c Apply subcompositor optimizations for Firefox Nightly 2022-10-29 11:15:40 +00:00
xdata.c Pacify more compiler warnings 2022-11-17 02:45:33 +00:00
xdg-activation-v1.xml Check in new files for xdg-activation 2022-11-14 05:58:00 +00:00
xdg-decoration-unstable-v1.xml Check in files for XDG decoration support 2022-09-30 07:34:55 +00:00
xdg-shell.xml Update xdg-shell implementation 2022-11-05 01:09:08 +00:00
xdg_activation.c Fix XDG activation in some edge cases 2022-11-16 07:11:03 +00:00
xdg_popup.c Major refactoring of the frame clock code 2022-11-22 10:57:50 +00:00
xdg_surface.c Major refactoring of the frame clock code 2022-11-22 10:57:50 +00:00
xdg_toplevel.c Fix scaling of built in resize dimensions 2022-11-22 12:50:42 +00:00
xdg_wm.c Update xdg-shell implementation 2022-11-05 01:09:08 +00:00
xerror.c Fix some minor problems 2022-11-13 13:45:11 +00:00
xsettings.c Import files 2022-09-12 13:24:50 +00:00

This is a tool for running Wayland applications on an X server,
preferably with a compositing manager running.

It is not yet complete.  What is not yet implemented includes support
for touchscreens, and device switching in dmabuf feedback.

It is not portable to systems other than recent versions of GNU/Linux
running the X.Org server 1.20 or later, and has not been tested on
window (and compositing) managers other than GNOME Shell.

It will not work very well unless the compositing manager supports the
EWMH frame synchronization protocol.

Building and running this tool requires the following X protocol
extensions:

  Nonrectangular Window Shape Extension, version 1.1 or later
  MIT Shared Memory Extension, version 1.2 or later
  X Resize, Rotate and Reflect Extension, version 1.4 or later
  X Synchronization Extension, version 1.0 or later
  X Rendering Extension, version 1.2 or later
  X Input Extension, version 2.3 or later
  Direct Rendering Interface 3, version 1.2 or later
  X Fixes Extension, version 1.5 or later
  X Presentation Extension, version 1.0 or later

In addition, it requires Xlib to be built with the XCB transport, and
the XCB bindings for MIT-SHM and DRI3 to be available.

Sometimes, it might be desirable to build with EGL, and use OpenGL ES
2.0 for i.e. YUV video format support.  To do so, uncomment the block
of code for EGL support in 12to11.conf before running `xmkmf'.  This
will additionally require the EGL and GLESv2 development files, and
for the following EGL and GLES extensions to be present at runtime:

  EGL_EXT_platform_base
  EGL_EXT_device_query
  EGL_KHR_image_base
  EGL_EXT_image_dma_buf_import_modifiers
  EGL_EXT_image_dma_buf_import
  EGL_EXT_buffer_age

  GL_OES_EGL_image
  GL_OES_EGL_image_external
  GL_EXT_read_format_bgra
  GL_EXT_unpack_subimage

After building with EGL support, the renderer must be enabled by
setting the environment variable "RENDERER" to "egl", or by setting
the "renderer" resource (class "Renderer") to "egl".

The following Wayland protocols are implemented to a more-or-less
complete degree:

  'wl_output',                                  version:  4
  'wl_compositor',                              version:  5
  'wl_shm',                                     version:  1
  'xdg_wm_base',                                version:  5
  'wl_subcompositor',                           version:  1
  'wl_seat',                                    version:  8
  'wl_data_device_manager',                     version:  3
  'zwp_linux_dmabuf_v1',                        version:  4
  'zwp_primary_selection_device_manager_v1',    version:  1
  'wp_viewporter',                              version:  1
  'zxdg_decoration_manager_v1',                 version:  1
  'zwp_text_input_manager_v3',                  version:  1
  'wp_single_pixel_buffer_manager_v1',          version:  1
  'zwp_pointer_constraints_v1',                 version:  1
  'zwp_relative_pointer_manager_v1',            version:  1
  'zwp_idle_inhibit_manager_v1',                version:  1
  'xdg_activation_v1',                          version:  1
  'wp_tearing_control_manager_v1',		version:  1

When built with EGL, the following Wayland protocol is also supported:

  'zwp_linux_explicit_synchronization_v1',      version:  2

When the X server supports version 1.6 or later of the X Resize,
Rotate and Reflect Extension, the following Wayland protocol is also
supported:

  'wp_drm_lease_device_v1',                     version: 1

When the X server supports version 2.4 or later of the X Input
Extension, the following Wayland protocol is also supported:

  'zwp_pointer_gestures_v1',                    version: 3

This directory is organized as follows:

  Imakefile     - the top level Makefile template
  12to11.conf   - configuration
  *.xml         - Wayland protocol definition source
  *.c, *.h      - C source code
  *.awk         - scripts used to generate headers
  *.txt         - text data used to generate some headers, i.e.
                  those containing MIME types or shaders

Building the source code is simple, provided that you have the
necessary libwayland-server library, pixman, XCB, DRM, xshmfence, and
X extension libraries installed:

  xmkmf # to generate the Makefile
  make  # to build the binary

wayland-scanner is also required when building from the repository.

Running the binary should be simple as well:

  ./12to11

Wayland programs will then run as regular X windows.

Be sure to configure your system so that idle inhibition is reported
correctly.  For more details, see the description of the
idleInhibitCommand resource in the manual page.