debian/changelog | 9 + debian/patches/series | 1 debian/patches/xmir-fixes.diff | 149 ---------------------------- debian/patches/xmir.patch | 216 +++++++++++++++++++++-------------------- 4 files changed, 122 insertions(+), 253 deletions(-)
New commits: commit 328cfba3ee6c5dbc17e68957ebb45cf0e3d82309 Author: Robert Ancell <robert.anc...@canonical.com> Date: Wed May 4 12:28:26 2016 +1200 * debian/patches/xmir.patch: - Fix recently added keymap code * debian/patches/xmir-fixes.diff: - Merged into xmir.patch diff --git a/debian/changelog b/debian/changelog index 8517549..b31bc7c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +xorg-server (2:1.18.3-1ubuntu2.2) xenial; urgency=medium + + * debian/patches/xmir.patch: + - Fix recently added keymap code + * debian/patches/xmir-fixes.diff: + - Merged into xmir.patch + + -- Robert Ancell <robert.anc...@canonical.com> Wed, 04 May 2016 12:19:14 +1200 + xorg-server (2:1.18.3-1ubuntu2.1) xenial; urgency=medium * debian/patches/xmir.patch: diff --git a/debian/patches/series b/debian/patches/series index 80c0c56..891be0f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -50,4 +50,3 @@ xmir.patch xmir-desktop-file-hint-flag.patch drm_device_keep_trying.patch xi2-resize-touch.patch -xmir-fixes.diff diff --git a/debian/patches/xmir-fixes.diff b/debian/patches/xmir-fixes.diff deleted file mode 100644 index 1f95270..0000000 --- a/debian/patches/xmir-fixes.diff +++ /dev/null @@ -1,149 +0,0 @@ -Description: port xmir to 1.18 - ---- a/hw/xmir/xmir-output.c -+++ b/hw/xmir/xmir-output.c -@@ -327,10 +327,10 @@ xmir_output_handle_resize(struct xmir_wi - - if (xmir_screen->glamor) { - glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); -- glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); - glClearColor(0., 0., 0., 1.); - glClear(GL_COLOR_BUFFER_BIT); -- glamor_copy_n_to_n_nf(&screen->root->drawable, &pixmap->drawable, -+ glamor_copy(&screen->root->drawable, &pixmap->drawable, - NULL, ©_box, 1, 0, 0, FALSE, FALSE, 0, NULL); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - } else { ---- a/hw/xmir/xmir.c -+++ b/hw/xmir/xmir.c -@@ -1246,7 +1246,7 @@ xmir_create_screen_resources(ScreenPtr s - if (xmir_screen->glamor && !xmir_screen->rootless) { - glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(screen->devPrivate); - -- glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); - glClear(GL_COLOR_BUFFER_BIT); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - ---- a/hw/xmir/xmir-glamor.c -+++ b/hw/xmir/xmir-glamor.c -@@ -220,7 +220,7 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - - pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale); - -- if (src_pixmap_priv->base.gl_fbo == GLAMOR_FBO_UNATTACHED) -+ if (src_pixmap_priv->gl_fbo == GLAMOR_FBO_UNATTACHED) - FatalError("aeiou\n"); - - glViewport(dx, dy, width + dx, height + dy); -@@ -231,7 +231,7 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - - if (!fbo) { - glActiveTexture(GL_TEXTURE0); -- glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); -+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->fbo->tex); - - if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); -@@ -272,13 +272,8 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); - _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); - -- if (xmir_screen->gbm) { -- _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -- } else { -- _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -- } -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); - - /* upper left */ - vertices[0] = _tx1; -@@ -317,13 +312,8 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); - _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); - -- if (xmir_screen->gbm) { -- _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -- } else { -- _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -- } -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); - - /* upper right */ - vertices[0] = _tx2; -@@ -368,7 +358,7 @@ xmir_glamor_copy_egl_common(DrawablePtr - DebugF("Box: (%i,%i)->(%i,%i)\n", ext->x1, ext->y1, ext->x2, ext->y2); - - if (epoxy_has_gl_extension("GL_EXT_framebuffer_blit") && !xmir_screen->doubled && !orientation) { -- glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb); -+ glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->fbo->fb); - - glBlitFramebuffer(ext->x1, ext->y2, ext->x2, ext->y1, - ext->x1 + dx, ext->y2 + dy, ext->x2 + dx, ext->y1 + dy, -@@ -404,7 +394,7 @@ xmir_glamor_copy_gbm(struct xmir_screen - PixmapPtr from = screen->GetWindowPixmap(window); - glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(back); - -- glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); - xmir_glamor_copy_egl_common(&window->drawable, from, glamor_get_pixmap_private(from), - RegionExtents(dirty), - back->drawable.width, back->drawable.height, 0, 0, xmir_win->orientation); -@@ -607,9 +597,9 @@ xmir_glamor_copy_egl_queue(struct xmir_s - * rotating back and forth. - */ - glamor_set_pixmap_type(src_pixmap, GLAMOR_TEXTURE_DRM); -- src_pixmap_priv->base.fbo->external = TRUE; -+ src_pixmap_priv->fbo->external = TRUE; - -- xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->base.fbo->tex, attribs); -+ xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->fbo->tex, attribs); - if (!xmir_win->image) { - GLint error; - ErrorF("eglCreateImageKHR failed with %x\n", eglGetError()); -@@ -1016,7 +1006,7 @@ glamor_egl_dri3_fd_name_from_tex(ScreenP - } - - unsigned int --glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h) -+glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h, Bool linear) - { - return 0; - } -@@ -1144,10 +1134,7 @@ xmir_glamor_init(struct xmir_screen *xmi - } - - if (!glamor_init(screen, -- GLAMOR_INVERTED_Y_AXIS | - GLAMOR_USE_EGL_SCREEN | -- GLAMOR_USE_SCREEN | -- GLAMOR_USE_PICTURE_SCREEN | - GLAMOR_NO_DRI3)) { - ErrorF("Failed to initialize glamor\n"); - return FALSE; ---- a/hw/xmir/xmir-input.c -+++ b/hw/xmir/xmir-input.c -@@ -378,15 +378,13 @@ xmir_window_handle_input_event(struct xm - case mir_input_event_type_key: { - MirKeyboardEvent const *kev; - MirKeyboardAction action; -- ValuatorMask mask; - - kev = mir_input_event_get_keyboard_event(ev); - action = mir_keyboard_event_action(kev); - -- valuator_mask_zero(&mask); - QueueKeyboardEvents(xmir_input->keyboard, - action == mir_keyboard_action_up ? KeyRelease : KeyPress, -- mir_keyboard_event_scan_code(kev) + 8, &mask); -+ mir_keyboard_event_scan_code(kev) + 8); - break; - } - case mir_input_event_type_touch: { diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch index 8d0d8ae..3af0c45 100644 --- a/debian/patches/xmir.patch +++ b/debian/patches/xmir.patch @@ -1,7 +1,7 @@ -From efc26decfbefc45cdb36110c019272fbaf41284f Mon Sep 17 00:00:00 2001 +From d1786a76da403e240abd98f65c95a2d0a242b495 Mon Sep 17 00:00:00 2001 From: Robert Ancell <robert.anc...@canonical.com> -Date: Fri, 15 May 2015 14:58:59 +1200 -Subject: [PATCH 1/3] XMir DDX +Date: Fri, 29 Apr 2016 14:57:53 +0200 +Subject: [PATCH xserver 1/3] XMir DDX Contributions from: Maarten Lankhorst <maarten.lankho...@ubuntu.com> @@ -9,6 +9,7 @@ Contributions from: Robert Ancell <robert.anc...@canonical.com> Andreas Pokorny <andreas.poko...@canonical.com> Daniel van Vugt <daniel.van.v...@canonical.com> + Chris Townsend <christopher.towns...@canonical.com> --- configure.ac | 25 + hw/Makefile.am | 9 +- @@ -22,13 +23,13 @@ Contributions from: hw/xmir/xmir-cursor.c | 210 ++++++ hw/xmir/xmir-cvt.c | 304 +++++++++ hw/xmir/xmir-dri2.c | 545 +++++++++++++++ - hw/xmir/xmir-glamor.c | 1173 ++++++++++++++++++++++++++++++++ - hw/xmir/xmir-input.c | 566 ++++++++++++++++ + hw/xmir/xmir-glamor.c | 1160 ++++++++++++++++++++++++++++++++ + hw/xmir/xmir-input.c | 592 ++++++++++++++++ hw/xmir/xmir-output.c | 449 +++++++++++++ hw/xmir/xmir-thread-proxy.c | 109 +++ - hw/xmir/xmir.c | 1564 +++++++++++++++++++++++++++++++++++++++++++ + hw/xmir/xmir.c | 1571 +++++++++++++++++++++++++++++++++++++++++++ hw/xmir/xmir.h | 226 +++++++ - 18 files changed, 7725 insertions(+), 2 deletions(-) + 18 files changed, 7745 insertions(+), 2 deletions(-) create mode 100644 hw/xmir/.gitignore create mode 100644 hw/xmir/Makefile.am create mode 100644 hw/xmir/dri2/Makefile.am @@ -46,11 +47,11 @@ Contributions from: create mode 100644 hw/xmir/xmir.c create mode 100644 hw/xmir/xmir.h -Index: xorg-server-1.18.3/configure.ac -=================================================================== ---- xorg-server-1.18.3.orig/configure.ac -+++ xorg-server-1.18.3/configure.ac -@@ -633,6 +633,7 @@ AC_ARG_ENABLE(xvfb, AS_HELP_ST +diff --git a/configure.ac b/configure.ac +index 77cf234..8bf62a0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -628,6 +628,7 @@ AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto]) AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) AC_ARG_ENABLE(xwayland, AS_HELP_STRING([--enable-xwayland], [Build Xwayland server (default: auto)]), [XWAYLAND=$enableval], [XWAYLAND=auto]) @@ -58,7 +59,7 @@ Index: xorg-server-1.18.3/configure.ac AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) AC_ARG_ENABLE(glamor, AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: no)]), [GLAMOR=$enableval], [GLAMOR=no]) -@@ -751,6 +752,7 @@ case $host_os in +@@ -746,6 +747,7 @@ case $host_os in XVFB=no XNEST=no XWAYLAND=no @@ -66,7 +67,7 @@ Index: xorg-server-1.18.3/configure.ac COMPOSITE=no DGA=no -@@ -2503,6 +2505,27 @@ if test "x$XWAYLAND" = xyes; then +@@ -2482,6 +2484,27 @@ if test "x$XWAYLAND" = xyes; then [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH]) fi @@ -94,7 +95,7 @@ Index: xorg-server-1.18.3/configure.ac dnl and the rest of these are generic, so they're in config.h dnl -@@ -2651,6 +2674,8 @@ hw/kdrive/fbdev/Makefile +@@ -2630,6 +2653,8 @@ hw/kdrive/fbdev/Makefile hw/kdrive/linux/Makefile hw/kdrive/src/Makefile hw/xwayland/Makefile @@ -103,10 +104,10 @@ Index: xorg-server-1.18.3/configure.ac test/Makefile test/xi1/Makefile test/xi2/Makefile -Index: xorg-server-1.18.3/hw/Makefile.am -=================================================================== ---- xorg-server-1.18.3.orig/hw/Makefile.am -+++ xorg-server-1.18.3/hw/Makefile.am +diff --git a/hw/Makefile.am b/hw/Makefile.am +index 19895dc..b7b958c 100644 +--- a/hw/Makefile.am ++++ b/hw/Makefile.am @@ -30,6 +30,10 @@ if XWAYLAND XWAYLAND_SUBDIRS = xwayland endif @@ -131,16 +132,18 @@ Index: xorg-server-1.18.3/hw/Makefile.am relink: $(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done -Index: xorg-server-1.18.3/hw/xmir/.gitignore -=================================================================== +diff --git a/hw/xmir/.gitignore b/hw/xmir/.gitignore +new file mode 100644 +index 0000000..b6a16d4 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/.gitignore ++++ b/hw/xmir/.gitignore @@ -0,0 +1 @@ +Xmir -Index: xorg-server-1.18.3/hw/xmir/Makefile.am -=================================================================== +diff --git a/hw/xmir/Makefile.am b/hw/xmir/Makefile.am +new file mode 100644 +index 0000000..be5225e --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/Makefile.am ++++ b/hw/xmir/Makefile.am @@ -0,0 +1,61 @@ +bin_PROGRAMS = Xmir + @@ -203,10 +206,11 @@ Index: xorg-server-1.18.3/hw/xmir/Makefile.am + +relink: + $(AM_V_at)rm -f Xmir$(EXEEXT) && $(MAKE) Xmir$(EXEEXT) -Index: xorg-server-1.18.3/hw/xmir/dri2/Makefile.am -=================================================================== +diff --git a/hw/xmir/dri2/Makefile.am b/hw/xmir/dri2/Makefile.am +new file mode 100644 +index 0000000..696240c --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/dri2/Makefile.am ++++ b/hw/xmir/dri2/Makefile.am @@ -0,0 +1,14 @@ +noinst_LTLIBRARIES = libdri2.la + @@ -222,10 +226,11 @@ Index: xorg-server-1.18.3/hw/xmir/dri2/Makefile.am + dri2ext.c \ + dri2int.h + -Index: xorg-server-1.18.3/hw/xmir/dri2/dri2.c -=================================================================== +diff --git a/hw/xmir/dri2/dri2.c b/hw/xmir/dri2/dri2.c +new file mode 100644 +index 0000000..6aa19ba --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/dri2/dri2.c ++++ b/hw/xmir/dri2/dri2.c @@ -0,0 +1,1398 @@ +/* + * Copyright © 2007, 2008 Red Hat, Inc. @@ -1625,10 +1630,11 @@ Index: xorg-server-1.18.3/hw/xmir/dri2/dri2.c + *is_param_recognized = FALSE; + return Success; +} -Index: xorg-server-1.18.3/hw/xmir/dri2/dri2.h -=================================================================== +diff --git a/hw/xmir/dri2/dri2.h b/hw/xmir/dri2/dri2.h +new file mode 100644 +index 0000000..318898b --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/dri2/dri2.h ++++ b/hw/xmir/dri2/dri2.h @@ -0,0 +1,364 @@ +/* + * Copyright © 2007 Red Hat, Inc. @@ -1994,10 +2000,11 @@ Index: xorg-server-1.18.3/hw/xmir/dri2/dri2.h +extern Bool noDRI2Extension; + +#endif -Index: xorg-server-1.18.3/hw/xmir/dri2/dri2ext.c -=================================================================== +diff --git a/hw/xmir/dri2/dri2ext.c b/hw/xmir/dri2/dri2ext.c +new file mode 100644 +index 0000000..befbb82 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/dri2/dri2ext.c ++++ b/hw/xmir/dri2/dri2ext.c @@ -0,0 +1,683 @@ +/* + * Copyright © 2008 Red Hat, Inc. @@ -2682,10 +2689,11 @@ Index: xorg-server-1.18.3/hw/xmir/dri2/dri2ext.c + + DRI2ModuleSetup(); +} -Index: xorg-server-1.18.3/hw/xmir/dri2/dri2int.h -=================================================================== +diff --git a/hw/xmir/dri2/dri2int.h b/hw/xmir/dri2/dri2int.h +new file mode 100644 +index 0000000..7f53eba --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/dri2/dri2int.h ++++ b/hw/xmir/dri2/dri2int.h @@ -0,0 +1,26 @@ +/* + * Copyright © 2011 Daniel Stone @@ -2713,10 +2721,11 @@ Index: xorg-server-1.18.3/hw/xmir/dri2/dri2int.h + */ + +extern Bool DRI2ModuleSetup(void); -Index: xorg-server-1.18.3/hw/xmir/xmir-cursor.c -=================================================================== +diff --git a/hw/xmir/xmir-cursor.c b/hw/xmir/xmir-cursor.c +new file mode 100644 +index 0000000..81873a4 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir-cursor.c ++++ b/hw/xmir/xmir-cursor.c @@ -0,0 +1,210 @@ +/* + * Copyright © 2015 Canonical Ltd @@ -2928,10 +2937,11 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-cursor.c + &xmir_pointer_sprite_funcs, + &xmir_pointer_screen_funcs, TRUE); +} -Index: xorg-server-1.18.3/hw/xmir/xmir-cvt.c -=================================================================== +diff --git a/hw/xmir/xmir-cvt.c b/hw/xmir/xmir-cvt.c +new file mode 100644 +index 0000000..6070d77 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir-cvt.c ++++ b/hw/xmir/xmir-cvt.c @@ -0,0 +1,304 @@ +/* Copied from hw/xfree86/modes/xf86cvt.c into xmir DDX and + * changed to generate an RRMode */ @@ -3237,10 +3247,11 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-cvt.c + + return RRModeGet(&modeinfo, name); +} -Index: xorg-server-1.18.3/hw/xmir/xmir-dri2.c -=================================================================== +diff --git a/hw/xmir/xmir-dri2.c b/hw/xmir/xmir-dri2.c +new file mode 100644 +index 0000000..b24d4b9 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir-dri2.c ++++ b/hw/xmir/xmir-dri2.c @@ -0,0 +1,545 @@ +/* + * Copyright © 2015 Canonical Ltd @@ -3787,11 +3798,12 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-dri2.c + ret = DRI2ScreenInit(xmir_screen->screen, &xmir_screen->dri2); + return ret; +} -Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c -=================================================================== +diff --git a/hw/xmir/xmir-glamor.c b/hw/xmir/xmir-glamor.c +new file mode 100644 +index 0000000..7ad0245 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir-glamor.c -@@ -0,0 +1,1173 @@ ++++ b/hw/xmir/xmir-glamor.c +@@ -0,0 +1,1160 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -4014,7 +4026,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + + pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale); + -+ if (src_pixmap_priv->base.gl_fbo == GLAMOR_FBO_UNATTACHED) ++ if (src_pixmap_priv->gl_fbo == GLAMOR_FBO_UNATTACHED) + FatalError("aeiou\n"); + + glViewport(dx, dy, width + dx, height + dy); @@ -4025,7 +4037,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + + if (!fbo) { + glActiveTexture(GL_TEXTURE0); -+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); ++ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->fbo->tex); + + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); @@ -4066,13 +4078,8 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); + _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); + -+ if (xmir_screen->gbm) { -+ _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -+ } else { -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -+ } ++ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); ++ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); + + /* upper left */ + vertices[0] = _tx1; @@ -4111,13 +4118,8 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); + _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); + -+ if (xmir_screen->gbm) { -+ _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -+ } else { -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -+ } ++ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); ++ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); + + /* upper right */ + vertices[0] = _tx2; @@ -4162,7 +4164,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + DebugF("Box: (%i,%i)->(%i,%i)\n", ext->x1, ext->y1, ext->x2, ext->y2); + + if (epoxy_has_gl_extension("GL_EXT_framebuffer_blit") && !xmir_screen->doubled && !orientation) { -+ glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb); ++ glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->fbo->fb); + + glBlitFramebuffer(ext->x1, ext->y2, ext->x2, ext->y1, + ext->x1 + dx, ext->y2 + dy, ext->x2 + dx, ext->y1 + dy, @@ -4198,7 +4200,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + PixmapPtr from = screen->GetWindowPixmap(window); + glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(back); + -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); + xmir_glamor_copy_egl_common(&window->drawable, from, glamor_get_pixmap_private(from), + RegionExtents(dirty), + back->drawable.width, back->drawable.height, 0, 0, xmir_win->orientation); @@ -4401,9 +4403,9 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + * rotating back and forth. + */ + glamor_set_pixmap_type(src_pixmap, GLAMOR_TEXTURE_DRM); -+ src_pixmap_priv->base.fbo->external = TRUE; ++ src_pixmap_priv->fbo->external = TRUE; + -+ xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->base.fbo->tex, attribs); ++ xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->fbo->tex, attribs); + if (!xmir_win->image) { + GLint error; + ErrorF("eglCreateImageKHR failed with %x\n", eglGetError()); @@ -4810,7 +4812,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c +} + +unsigned int -+glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h) ++glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h, Bool linear) +{ + return 0; +} @@ -4938,10 +4940,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + } + + if (!glamor_init(screen, -+ GLAMOR_INVERTED_Y_AXIS | + GLAMOR_USE_EGL_SCREEN | -+ GLAMOR_USE_SCREEN | -+ GLAMOR_USE_PICTURE_SCREEN | + GLAMOR_NO_DRI3)) { + ErrorF("Failed to initialize glamor\n"); + return FALSE; @@ -4965,11 +4964,12 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-glamor.c + + return TRUE; +} -Index: xorg-server-1.18.3/hw/xmir/xmir-input.c -=================================================================== +diff --git a/hw/xmir/xmir-input.c b/hw/xmir/xmir-input.c +new file mode 100644 +index 0000000..14c4709 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir-input.c -@@ -0,0 +1,596 @@ ++++ b/hw/xmir/xmir-input.c +@@ -0,0 +1,592 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -5350,15 +5350,13 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-input.c + case mir_input_event_type_key: { + MirKeyboardEvent const *kev; + MirKeyboardAction action; -+ ValuatorMask mask; + + kev = mir_input_event_get_keyboard_event(ev); + action = mir_keyboard_event_action(kev); + -+ valuator_mask_zero(&mask); + QueueKeyboardEvents(xmir_input->keyboard, + action == mir_keyboard_action_up ? KeyRelease : KeyPress, -+ mir_keyboard_event_scan_code(kev) + 8, &mask); ++ mir_keyboard_event_scan_code(kev) + 8); + break; + } + case mir_input_event_type_touch: { @@ -5449,8 +5447,6 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-input.c + XkbChangesRec changes = { 0 }; + + mir_keymap_event_get_keymap_buffer(ev, (char const **)&buffer, &length); -+ -+ buffer[length] = '\0'; + + xkb = XkbCompileKeymapFromString(xmir_input->keyboard, buffer, length); + @@ -5566,10 +5562,11 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-input.c + + mieqFini(); +} -Index: xorg-server-1.18.3/hw/xmir/xmir-output.c -=================================================================== +diff --git a/hw/xmir/xmir-output.c b/hw/xmir/xmir-output.c +new file mode 100644 +index 0000000..f538749 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir-output.c ++++ b/hw/xmir/xmir-output.c @@ -0,0 +1,449 @@ +/* + * Copyright © 2015 Canonical Ltd @@ -5900,10 +5897,10 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-output.c + + if (xmir_screen->glamor) { + glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); + glClearColor(0., 0., 0., 1.); + glClear(GL_COLOR_BUFFER_BIT); -+ glamor_copy_n_to_n_nf(&screen->root->drawable, &pixmap->drawable, ++ glamor_copy(&screen->root->drawable, &pixmap->drawable, + NULL, ©_box, 1, 0, 0, FALSE, FALSE, 0, NULL); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + } else { @@ -6020,10 +6017,11 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-output.c + + return TRUE; +} -Index: xorg-server-1.18.3/hw/xmir/xmir-thread-proxy.c -=================================================================== +diff --git a/hw/xmir/xmir-thread-proxy.c b/hw/xmir/xmir-thread-proxy.c +new file mode 100644 +index 0000000..dbb187f --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir-thread-proxy.c ++++ b/hw/xmir/xmir-thread-proxy.c @@ -0,0 +1,109 @@ +/* + * Copyright © 2012-2015 Canonical Ltd @@ -6134,11 +6132,12 @@ Index: xorg-server-1.18.3/hw/xmir/xmir-thread-proxy.c + msg.callback(msg.xmir_screen, msg.xmir_window, msg.arg); + } +} -Index: xorg-server-1.18.3/hw/xmir/xmir.c -=================================================================== +diff --git a/hw/xmir/xmir.c b/hw/xmir/xmir.c +new file mode 100644 +index 0000000..34f78c9 --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir.c -@@ -0,0 +1,1564 @@ ++++ b/hw/xmir/xmir.c +@@ -0,0 +1,1571 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -6593,7 +6592,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir.c + top_normal = top; + if (xmir_get_window_name(top, wm_name, sizeof wm_name)) + top_named = top; -+ ++ + top = top->firstChild; + } + if (!named) @@ -7384,7 +7383,7 @@ Index: xorg-server-1.18.3/hw/xmir/xmir.c + if (xmir_screen->glamor && !xmir_screen->rootless) { + glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(screen->devPrivate); + -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); + glClear(GL_COLOR_BUFFER_BIT); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + @@ -7541,6 +7540,13 @@ Index: xorg-server-1.18.3/hw/xmir/xmir.c + + mir_connection_get_available_surface_formats(xmir_screen->conn, + format, sizeof(format)/sizeof(format[0]), &formats); ++ ++#if 0 /* Emulate the Mir Android graphics platform for LP: #1573470 */ ++ format[0] = mir_pixel_format_abgr_8888; ++ format[1] = mir_pixel_format_xbgr_8888; ++ formats = 2; ++#endif ++ + for (f = 0; f < formats; ++f) { + switch (format[f]) { + case mir_pixel_format_argb_8888: @@ -7703,10 +7709,11 @@ Index: xorg-server-1.18.3/hw/xmir/xmir.c + FatalError("Couldn't add screen\n"); + } +} -Index: xorg-server-1.18.3/hw/xmir/xmir.h -=================================================================== +diff --git a/hw/xmir/xmir.h b/hw/xmir/xmir.h +new file mode 100644 +index 0000000..0bb4b1d --- /dev/null -+++ xorg-server-1.18.3/hw/xmir/xmir.h ++++ b/hw/xmir/xmir.h @@ -0,0 +1,226 @@ +/* + * Copyright © 2015 Canonical Ltd @@ -7934,3 +7941,6 @@ Index: xorg-server-1.18.3/hw/xmir/xmir.h + (((major) * 10000000) + ((minor) * 100000) + ((patch) * 1000) + snap) + +#endif +-- +2.7.4 +