From 540300e2043e44a8ab93fe0c0178be8ffb9b5862336ce77e8b299f6df92e7012 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Wed, 27 Oct 2021 16:05:03 +0000 Subject: [PATCH 1/3] - Update to version 21.1.0 * The meson support is now fully mature. While autotools support will still be kept for this release series, it will be dropped afterwards. * Glamor support for Xvfb. * Variable refresh rate support in the modesetting driver. * XInput 2.4 support which adds touchpad gestures. * DMX DDX has been removed. * X server now correctly reports display DPI in more cases. This may affect rendering of client applications that have their own workarounds for hi-DPI screens. * A large number of small features and various bug fixes. - updated xorg-server-provides - supersedes patches * U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch * U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch * U_glamor_egl-Reject-OpenGL-2.1-early-on.patch * u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch - refreshed patches * N_fix-dpi-values.diff * N_zap_warning_xserver.diff * u_modesetting-Fix-dirty-updates-for-sw-rotation.patch * u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch * u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch - disabled n_xserver-optimus-autoconfig-hack.patch, which I believe is superseded by: commit 078277e4d92f05a90c4715d61b89b9d9d38d68ea Author: Dave Airlie Date: Fri Aug 17 09:49:24 2012 +1000 xf86: autobind GPUs to the screen - added pkgconfig(libxcvt) - cvt binary moved to libxcvt0 package OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=804 --- N_fix-dpi-values.diff | 8 +- N_zap_warning_xserver.diff | 67 +++++++-------- ...probing-a-non-PCI-platform-device-on.patch | 31 ------- ...onfigureWindow-instead-of-MoveWindow.patch | 48 ----------- U_glamor_egl-Reject-OpenGL-2.1-early-on.patch | 82 ------------------- pre_checkin.sh | 2 +- ...ng-Fix-dirty-updates-for-sw-rotation.patch | 43 +++++----- ...sh-if-slave-screen-does-not-have-pro.patch | 26 +++--- ...o-unsigned-long-before-shifting-them.patch | 41 ---------- ...dd-VBEDPMSGetCapabilities-VBEDPMSGet.patch | 60 +++++++------- xorg-server-1.20.13.tar.xz | 3 - xorg-server-21.1.0.tar.xz | 3 + xorg-server-provides | 4 +- xorg-x11-server.changes | 37 +++++++++ xorg-x11-server.spec | 43 +++------- 15 files changed, 152 insertions(+), 346 deletions(-) delete mode 100644 U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch delete mode 100644 U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch delete mode 100644 U_glamor_egl-Reject-OpenGL-2.1-early-on.patch delete mode 100644 u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch delete mode 100644 xorg-server-1.20.13.tar.xz create mode 100644 xorg-server-21.1.0.tar.xz diff --git a/N_fix-dpi-values.diff b/N_fix-dpi-values.diff index 7963943..0197ff2 100644 --- a/N_fix-dpi-values.diff +++ b/N_fix-dpi-values.diff @@ -6,7 +6,7 @@ Index: hw/xfree86/common/xf86Helper.c =================================================================== --- hw/xfree86/common/xf86Helper.c.orig +++ hw/xfree86/common/xf86Helper.c -@@ -875,12 +875,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int +@@ -883,12 +883,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int else if (pScrn->widthmm > 0 || pScrn->heightmm > 0) { from = X_CONFIG; if (pScrn->widthmm > 0) { @@ -33,9 +33,9 @@ Index: hw/xfree86/common/xf86Helper.c } if (pScrn->xDpi > 0 && pScrn->yDpi <= 0) pScrn->yDpi = pScrn->xDpi; -@@ -919,12 +929,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int - pScrn->widthmm = ddcWidthmm; - pScrn->heightmm = ddcHeightmm; +@@ -927,12 +937,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int + pScrn->widthmm = probedWidthmm; + pScrn->heightmm = probedHeightmm; if (pScrn->widthmm > 0) { - pScrn->xDpi = - (int) ((double) pScrn->virtualX * MMPERINCH / pScrn->widthmm); diff --git a/N_zap_warning_xserver.diff b/N_zap_warning_xserver.diff index a37b57f..ec75484 100644 --- a/N_zap_warning_xserver.diff +++ b/N_zap_warning_xserver.diff @@ -8,19 +8,19 @@ Zap the server if a second ctrl-alt-backspace is sent within 2 seconds. This can be enabled with a new option flag "ZapWarning" -Index: xorg-server-1.20.5/hw/xfree86/common/xf86Config.c +Index: xorg-server-21.1.0/hw/xfree86/common/xf86Config.c =================================================================== ---- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Config.c -+++ xorg-server-1.20.5/hw/xfree86/common/xf86Config.c -@@ -622,6 +622,7 @@ typedef enum { - FLAG_NOTRAPSIGNALS, +--- xorg-server-21.1.0.orig/hw/xfree86/common/xf86Config.c ++++ xorg-server-21.1.0/hw/xfree86/common/xf86Config.c +@@ -621,6 +621,7 @@ configFiles(XF86ConfFilesPtr fileconf) + typedef enum { FLAG_DONTVTSWITCH, FLAG_DONTZAP, + FLAG_ZAPWARNING, FLAG_DONTZOOM, FLAG_DISABLEVIDMODE, FLAG_ALLOWNONLOCAL, -@@ -659,6 +660,8 @@ static OptionInfoRec FlagOptions[] = { +@@ -657,6 +658,8 @@ static OptionInfoRec FlagOptions[] = { {0}, FALSE}, {FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN, {0}, FALSE}, @@ -29,70 +29,65 @@ Index: xorg-server-1.20.5/hw/xfree86/common/xf86Config.c {FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN, {0}, FALSE}, {FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN, -@@ -740,6 +743,7 @@ configServerFlags(XF86ConfFlagsPtr flags - xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals); +@@ -739,6 +742,7 @@ configServerFlags(XF86ConfFlagsPtr flags + xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch); xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap); + xf86GetOptValBool(FlagOptions, FLAG_ZAPWARNING, &xf86Info.ZapWarning); xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom); xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI); -Index: xorg-server-1.20.5/hw/xfree86/common/xf86Events.c +Index: xorg-server-21.1.0/hw/xfree86/common/xf86Events.c =================================================================== ---- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Events.c -+++ xorg-server-1.20.5/hw/xfree86/common/xf86Events.c -@@ -166,13 +166,25 @@ xf86ProcessActionEvent(ActionEvent actio +--- xorg-server-21.1.0.orig/hw/xfree86/common/xf86Events.c ++++ xorg-server-21.1.0/hw/xfree86/common/xf86Events.c +@@ -158,10 +158,22 @@ xf86ProcessActionEvent(ActionEvent actio DebugF("ProcessActionEvent(%d,%p)\n", (int) action, arg); switch (action) { case ACTION_TERMINATE: - if (!xf86Info.dontZap) { - xf86Msg(X_INFO, "Server zapped. Shutting down.\n"); +- GiveUp(0); + if (xf86Info.dontZap) + break; + -+ if (xf86Info.ZapWarning) { -+ static struct timeval LastZap = { 0, 0}; -+ struct timeval NewZap; ++ if (xf86Info.ZapWarning) { ++ static struct timeval LastZap = { 0, 0}; ++ struct timeval NewZap; + -+ gettimeofday(&NewZap, NULL); ++ gettimeofday(&NewZap, NULL); + -+ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) { -+ xf86OSRingBell(30, 1000, 50); -+ LastZap = NewZap; -+ break; -+ } -+ } - #ifdef XFreeXDGA -- DGAShutdown(); -+ DGAShutdown(); - #endif -- GiveUp(0); -- } ++ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) { ++ xf86OSRingBell(30, 1000, 50); ++ LastZap = NewZap; ++ break; ++ } + } + GiveUp(0); break; case ACTION_NEXT_MODE: if (!xf86Info.dontZoom) -Index: xorg-server-1.20.5/hw/xfree86/common/xf86Globals.c +Index: xorg-server-21.1.0/hw/xfree86/common/xf86Globals.c =================================================================== ---- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Globals.c -+++ xorg-server-1.20.5/hw/xfree86/common/xf86Globals.c +--- xorg-server-21.1.0.orig/hw/xfree86/common/xf86Globals.c ++++ xorg-server-21.1.0/hw/xfree86/common/xf86Globals.c @@ -107,6 +107,7 @@ xf86InfoRec xf86Info = { .autoVTSwitch = TRUE, .ShareVTs = FALSE, .dontZap = FALSE, + .ZapWarning = TRUE, .dontZoom = FALSE, - .notrapSignals = FALSE, .currentScreen = NULL, -Index: xorg-server-1.20.5/hw/xfree86/common/xf86Privstr.h + #ifdef CSRG_BASED +Index: xorg-server-21.1.0/hw/xfree86/common/xf86Privstr.h =================================================================== ---- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Privstr.h -+++ xorg-server-1.20.5/hw/xfree86/common/xf86Privstr.h +--- xorg-server-21.1.0.orig/hw/xfree86/common/xf86Privstr.h ++++ xorg-server-21.1.0/hw/xfree86/common/xf86Privstr.h @@ -62,6 +62,7 @@ typedef struct { Bool autoVTSwitch; Bool ShareVTs; Bool dontZap; + Bool ZapWarning; Bool dontZoom; - Bool notrapSignals; /* don't exit cleanly - die at fault */ + /* graphics part */ diff --git a/U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch b/U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch deleted file mode 100644 index 7d2f56f..0000000 --- a/U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch +++ /dev/null @@ -1,31 +0,0 @@ -From e50c85f4ebf559a3bac4817b41074c43d4691779 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Fri, 26 Oct 2018 17:47:30 -0700 -Subject: [PATCH] Fix segfault on probing a non-PCI platform device on a system - with PCI. - -Some Broadcom set-top-box boards have PCI busses, but the GPU is still -probed through DT. We would dereference a null busid here in that -case. - -Signed-off-by: Eric Anholt ---- - hw/xfree86/common/xf86platformBus.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c -index cef47da03..dadbac6c8 100644 ---- a/hw/xfree86/common/xf86platformBus.c -+++ b/hw/xfree86/common/xf86platformBus.c -@@ -289,7 +289,7 @@ xf86platformProbe(void) - for (i = 0; i < xf86_num_platform_devices; i++) { - char *busid = xf86_platform_odev_attributes(i)->busid; - -- if (pci && (strncmp(busid, "pci:", 4) == 0)) { -+ if (pci && busid && (strncmp(busid, "pci:", 4) == 0)) { - platform_find_pci_info(&xf86_platform_devices[i], busid); - } - --- -2.16.4 - diff --git a/U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch b/U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch deleted file mode 100644 index 2e34b6b..0000000 --- a/U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch +++ /dev/null @@ -1,48 +0,0 @@ -Git-commit: fbdd4d679a7d020f78f7b877033b83e00f5a0f73 -Patch-Mainline: Upstream -Author: Michal Srb -Subject: dix/window: Use ConfigureWindow instead of MoveWindow -References: bsc#1114822 - -The screensaver can regularly move its window to random offsets. It should -use the ConfigureWindow function instead of calling the Screen's MoveWindow -directly. Some MoveWindow implementations, such as compMoveWindow, rely on -Screen's ConfigNotify being called first as it happens in ConfigureWindow. - -Reviewed-by: Adam Jackson ---- - dix/window.c | 14 ++++++-------- - 1 file changed, 6 insertions(+), 8 deletions(-) - -Index: xorg-server-1.20.5/dix/window.c -=================================================================== ---- xorg-server-1.20.5.orig/dix/window.c -+++ xorg-server-1.20.5/dix/window.c -@@ -3110,6 +3110,7 @@ int - dixSaveScreens(ClientPtr client, int on, int mode) - { - int rc, i, what, type; -+ XID vlist[2]; - - if (on == SCREEN_SAVER_FORCER) { - if (mode == ScreenSaverReset) -@@ -3162,14 +3163,11 @@ dixSaveScreens(ClientPtr client, int on, - * for the root window, so PaintWindow works - */ - screenIsSaved = SCREEN_SAVER_OFF; -- (*pWin->drawable.pScreen->MoveWindow) (pWin, -- (short) (- -- (rand() % -- RANDOM_WIDTH)), -- (short) (- -- (rand() % -- RANDOM_WIDTH)), -- pWin->nextSib, VTMove); -+ -+ vlist[0] = -(rand() % RANDOM_WIDTH); -+ vlist[1] = -(rand() % RANDOM_WIDTH); -+ ConfigureWindow(pWin, CWX | CWY, vlist, client); -+ - screenIsSaved = SCREEN_SAVER_ON; - } - /* diff --git a/U_glamor_egl-Reject-OpenGL-2.1-early-on.patch b/U_glamor_egl-Reject-OpenGL-2.1-early-on.patch deleted file mode 100644 index 20bcd6b..0000000 --- a/U_glamor_egl-Reject-OpenGL-2.1-early-on.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 26004df63c25061586a967f3586795a75280acc2 Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Wed, 25 Dec 2019 18:54:03 +0100 -Subject: [PATCH] glamor_egl: Reject OpenGL < 2.1 early on - -The Etnaviv driver on GC2000 reports desktop OpenGL 1.3 but also OpenGL ES 2.0. -However, with the modesetting driver, GLES2 never gets a chance: - - [ 11233.393] Require OpenGL version 2.1 or later. - [ 11233.393] (EE) modeset(0): Failed to initialize glamor at ScreenInit() time. - [ 11233.393] (EE) - Fatal server error: - [ 11233.395] (EE) AddScreen/ScreenInit failed for driver 0 - -Let's reject old desktop GL early on, just like XWayland seems to do. - -This is perhaps a slightly bit more complicated that one would expect, since we -need to call eglMakeCurrent() before we query the GL version. - -Signed-off-by: Lubomir Rintel ---- - glamor/glamor_egl.c | 39 ++++++++++++++++++++++++++++----------- - 1 file changed, 28 insertions(+), 11 deletions(-) - -Index: xserver-1.20.8+0/glamor/glamor_egl.c -=================================================================== ---- xserver-1.20.8+0.orig/glamor/glamor_egl.c -+++ xserver-1.20.8+0/glamor/glamor_egl.c -@@ -985,6 +985,22 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd - config_attribs); - } - -+ if (glamor_egl->context != EGL_NO_CONTEXT) { -+ if (!eglMakeCurrent(glamor_egl->display, -+ EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Failed to make GL context current\n"); -+ goto error; -+ } -+ -+ if (epoxy_gl_version() < 21) { -+ xf86DrvMsg(scrn->scrnIndex, X_INFO, -+ "glamor: Ignoring GL < 2.1, falling back to GLES.\n"); -+ eglDestroyContext(glamor_egl->display, glamor_egl->context); -+ glamor_egl->context = EGL_NO_CONTEXT; -+ } -+ } -+ - if (glamor_egl->context == EGL_NO_CONTEXT) { - static const EGLint config_attribs[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, -@@ -999,18 +1015,19 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd - glamor_egl->context = eglCreateContext(glamor_egl->display, - NULL, EGL_NO_CONTEXT, - config_attribs); -- } -- if (glamor_egl->context == EGL_NO_CONTEXT) { -- xf86DrvMsg(scrn->scrnIndex, X_ERROR, -- "glamor: Failed to create GL or GLES2 contexts\n"); -- goto error; -- } - -- if (!eglMakeCurrent(glamor_egl->display, -- EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) { -- xf86DrvMsg(scrn->scrnIndex, X_ERROR, -- "Failed to make EGL context current\n"); -- goto error; -+ if (glamor_egl->context == EGL_NO_CONTEXT) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "glamor: Failed to create GL or GLES2 contexts\n"); -+ goto error; -+ } -+ -+ if (!eglMakeCurrent(glamor_egl->display, -+ EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Failed to make GLES2 context current\n"); -+ goto error; -+ } - } - - renderer = glGetString(GL_RENDERER); diff --git a/pre_checkin.sh b/pre_checkin.sh index 6004cfd..a71e75e 100644 --- a/pre_checkin.sh +++ b/pre_checkin.sh @@ -29,7 +29,7 @@ else echo "" echo "" echo "Trying to guess the right tarball" - sh $0 --tar xserver-*.tar.xz + sh $0 --tar xorg-server-*.tar.xz echo "... Please verify if the result makes sense" exit 2 fi diff --git a/u_modesetting-Fix-dirty-updates-for-sw-rotation.patch b/u_modesetting-Fix-dirty-updates-for-sw-rotation.patch index 735cac7..b5363cf 100644 --- a/u_modesetting-Fix-dirty-updates-for-sw-rotation.patch +++ b/u_modesetting-Fix-dirty-updates-for-sw-rotation.patch @@ -19,11 +19,11 @@ Signed-off-by: Patrik Jakobsson .../drivers/modesetting/drmmode_display.h | 2 + 3 files changed, 63 insertions(+), 22 deletions(-) -diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c -index ef4a314..deca1ed 100644 ---- a/hw/xfree86/drivers/modesetting/driver.c -+++ b/hw/xfree86/drivers/modesetting/driver.c -@@ -503,9 +503,41 @@ GetRec(ScrnInfoPtr pScrn) +Index: xorg-server-21.1.0/hw/xfree86/drivers/modesetting/driver.c +=================================================================== +--- xorg-server-21.1.0.orig/hw/xfree86/drivers/modesetting/driver.c ++++ xorg-server-21.1.0/hw/xfree86/drivers/modesetting/driver.c +@@ -515,9 +515,41 @@ GetRec(ScrnInfoPtr pScrn) return TRUE; } @@ -67,7 +67,7 @@ index ef4a314..deca1ed 100644 { modesettingPtr ms = modesettingPTR(scrn); RegionPtr dirty = DamageRegion(damage); -@@ -520,13 +552,9 @@ dispatch_dirty_region(ScrnInfoPtr scrn, +@@ -532,13 +564,9 @@ dispatch_dirty_region(ScrnInfoPtr scrn, if (!clip) return -ENOMEM; @@ -84,7 +84,7 @@ index ef4a314..deca1ed 100644 /* TODO query connector property to see if this is needed */ ret = drmModeDirtyFB(ms->fd, fb_id, clip, num_cliprects); -@@ -549,20 +577,31 @@ static void +@@ -561,20 +589,31 @@ static void dispatch_dirty(ScreenPtr pScreen) { ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen); @@ -127,8 +127,8 @@ index ef4a314..deca1ed 100644 } } -@@ -574,7 +613,7 @@ dispatch_dirty_pixmap(ScrnInfoPtr scrn, xf86CrtcPtr crtc, PixmapPtr ppix) - DamagePtr damage = ppriv->slave_damage; +@@ -586,7 +625,7 @@ dispatch_dirty_pixmap(ScrnInfoPtr scrn, + DamagePtr damage = ppriv->secondary_damage; int fb_id = ppriv->fb_id; - dispatch_dirty_region(scrn, ppix, damage, fb_id); @@ -136,11 +136,11 @@ index ef4a314..deca1ed 100644 } static void -diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c -index 88992f5..b29db12 100644 ---- a/hw/xfree86/drivers/modesetting/drmmode_display.c -+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c -@@ -598,7 +598,7 @@ drmmode_crtc_can_test_mode(xf86CrtcPtr crtc) +Index: xorg-server-21.1.0/hw/xfree86/drivers/modesetting/drmmode_display.c +=================================================================== +--- xorg-server-21.1.0.orig/hw/xfree86/drivers/modesetting/drmmode_display.c ++++ xorg-server-21.1.0/hw/xfree86/drivers/modesetting/drmmode_display.c +@@ -627,7 +627,7 @@ drmmode_crtc_can_test_mode(xf86CrtcPtr c return ms->atomic_modeset; } @@ -149,19 +149,16 @@ index 88992f5..b29db12 100644 drmmode_crtc_get_fb_id(xf86CrtcPtr crtc, uint32_t *fb_id, int *x, int *y) { drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; -diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.h b/hw/xfree86/drivers/modesetting/drmmode_display.h -index 59d79e9..0ed96ab 100644 ---- a/hw/xfree86/drivers/modesetting/drmmode_display.h -+++ b/hw/xfree86/drivers/modesetting/drmmode_display.h -@@ -297,6 +297,8 @@ void drmmode_copy_fb(ScrnInfoPtr pScrn, drmmode_ptr drmmode); +Index: xorg-server-21.1.0/hw/xfree86/drivers/modesetting/drmmode_display.h +=================================================================== +--- xorg-server-21.1.0.orig/hw/xfree86/drivers/modesetting/drmmode_display.h ++++ xorg-server-21.1.0/hw/xfree86/drivers/modesetting/drmmode_display.h +@@ -311,6 +311,8 @@ void drmmode_copy_fb(ScrnInfoPtr pScrn, int drmmode_crtc_flip(xf86CrtcPtr crtc, uint32_t fb_id, uint32_t flags, void *data); +Bool drmmode_crtc_get_fb_id(xf86CrtcPtr crtc, uint32_t *fb_id, int *x, int *y); + void drmmode_set_dpms(ScrnInfoPtr scrn, int PowerManagementMode, int flags); + void drmmode_crtc_set_vrr(xf86CrtcPtr crtc, Bool enabled); - #endif --- -2.31.1 - diff --git a/u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch b/u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch index e477561..d4c80dc 100644 --- a/u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch +++ b/u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch @@ -21,18 +21,18 @@ provider is there. randr/randr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: xorg-server-1.20.5/randr/randr.c +Index: xorg-server-21.1.0/randr/randr.c =================================================================== ---- xorg-server-1.20.5.orig/randr/randr.c -+++ xorg-server-1.20.5/randr/randr.c -@@ -647,7 +647,9 @@ RRTellChanged(ScreenPtr pScreen) +--- xorg-server-21.1.0.orig/randr/randr.c ++++ xorg-server-21.1.0/randr/randr.c +@@ -651,7 +651,9 @@ RRTellChanged(ScreenPtr pScreen) - xorg_list_for_each_entry(iter, &master->slave_list, slave_head) { - pSlaveScrPriv = rrGetScrPriv(iter); -- pSlaveScrPriv->provider->changed = FALSE; -+ if (pSlaveScrPriv->provider) { -+ pSlaveScrPriv->provider->changed = FALSE; -+ } - if (iter->is_output_slave) { - for (i = 0; i < pSlaveScrPriv->numOutputs; i++) - pSlaveScrPriv->outputs[i]->changed = FALSE; + xorg_list_for_each_entry(iter, &primary->secondary_list, secondary_head) { + pSecondaryScrPriv = rrGetScrPriv(iter); +- pSecondaryScrPriv->provider->changed = FALSE; ++ if (pSecondaryScrPriv->provider) { ++ pSecondaryScrPriv->provider->changed = FALSE; ++ } + if (iter->is_output_secondary) { + for (i = 0; i < pSecondaryScrPriv->numOutputs; i++) + pSecondaryScrPriv->outputs[i]->changed = FALSE; diff --git a/u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch b/u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch deleted file mode 100644 index 93c215a..0000000 --- a/u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch +++ /dev/null @@ -1,41 +0,0 @@ -From: Egbert Eich -Date: Fri May 30 19:08:00 2014 -0400 -Subject: [PATCH]render: Cast color masks to unsigned long before shifting them -Patch-mainline: to be upstreamed -Git-commit: 6ec9a78f9b79668239c3a1519d715cbecf186cef -Git-repo: -References: bnc#876757 -Signed-off-by: Egbert Eich - -The color masks in DirectFormatRec are CARD16. Shifting them may lead -to unexpected results. Cast them to unsigned long to make sure the -shifted value will still fit into that type. - -Signed-off-by: Egbert Eich ---- - render/picture.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -Index: xorg-server-1.20.5/render/picture.c -=================================================================== ---- xorg-server-1.20.5.orig/render/picture.c -+++ xorg-server-1.20.5/render/picture.c -@@ -527,12 +527,12 @@ PictureMatchVisual(ScreenPtr pScreen, in - return format; - } - else { -- if (format->direct.redMask << format->direct.red == -- pVisual->redMask && -- format->direct.greenMask << format->direct.green == -- pVisual->greenMask && -- format->direct.blueMask << format->direct.blue == -- pVisual->blueMask) { -+ if (((unsigned long)format->direct.redMask) << -+ format->direct.red == pVisual->redMask && -+ ((unsigned long)format->direct.greenMask) << -+ format->direct.green == pVisual->greenMask && -+ ((unsigned long)format->direct.blueMask) << -+ format->direct.blue == pVisual->blueMask) { - return format; - } - } diff --git a/u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch b/u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch index e758fb9..b28059f 100644 --- a/u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch +++ b/u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch @@ -8,14 +8,14 @@ Signed-off-by: Egbert Eich Signed-off-by: Egbert Eich --- - hw/xfree86/vbe/vbe.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++- - hw/xfree86/vbe/vbe.h | 3 ++ + hw/xfree86/in10/vbe.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++- + hw/xfree86/in10/vbe.h | 3 ++ 2 files changed, 149 insertions(+), 1 deletion(-) -diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c -index 39f0cef..179d4c6 100644 ---- a/hw/xfree86/vbe/vbe.c -+++ b/hw/xfree86/vbe/vbe.c +Index: xorg-server-21.1.0/hw/xfree86/int10/vbe.c +=================================================================== +--- xorg-server-21.1.0.orig/hw/xfree86/int10/vbe.c ++++ xorg-server-21.1.0/hw/xfree86/int10/vbe.c @@ -20,6 +20,28 @@ #include "vbe.h" #include @@ -91,7 +91,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return NULL; -@@ -458,6 +486,7 @@ VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock * block) +@@ -458,6 +486,7 @@ VBESetVBEMode(vbeInfoPtr pVbe, int mode, Output: AX = Status (All other registers are preserved) */ @@ -99,7 +99,7 @@ index 39f0cef..179d4c6 100644 pVbe->pInt10->num = 0x10; pVbe->pInt10->ax = 0x4f02; pVbe->pInt10->bx = mode; -@@ -471,6 +500,7 @@ VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock * block) +@@ -471,6 +500,7 @@ VBESetVBEMode(vbeInfoPtr pVbe, int mode, pVbe->pInt10->bx &= ~(1 << 11); xf86ExecX86int10(pVbe->pInt10); @@ -107,7 +107,7 @@ index 39f0cef..179d4c6 100644 return (R16(pVbe->pInt10->ax) == 0x4f); } -@@ -488,10 +518,12 @@ VBEGetVBEMode(vbeInfoPtr pVbe, int *mode) +@@ -488,10 +518,12 @@ VBEGetVBEMode(vbeInfoPtr pVbe, int *mode BX := Current video mode (All other registers are preserved) */ @@ -120,7 +120,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) == 0x4f) { *mode = R16(pVbe->pInt10->bx); -@@ -521,12 +553,14 @@ VBEGetModeInfo(vbeInfoPtr pVbe, int mode) +@@ -521,12 +553,14 @@ VBEGetModeInfo(vbeInfoPtr pVbe, int mode AX := status (All other registers are preserved) */ @@ -135,7 +135,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return NULL; -@@ -586,6 +620,7 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction function, +@@ -586,6 +620,7 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveR (All other registers are preserved) */ @@ -143,7 +143,7 @@ index 39f0cef..179d4c6 100644 if ((pVbe->version & 0xff00) > 0x100) { int screen = pVbe->pInt10->pScrn->scrnIndex; -@@ -597,9 +632,9 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction function, +@@ -597,9 +632,9 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveR pVbe->pInt10->dx = 0; pVbe->pInt10->cx = 0x000f; xf86ExecX86int10(pVbe->pInt10); @@ -154,7 +154,7 @@ index 39f0cef..179d4c6 100644 if (function == MODE_SAVE) { int npages = (R16(pVbe->pInt10->bx) * 64) / 4096 + 1; -@@ -618,6 +653,7 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction function, +@@ -618,6 +653,7 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveR if (!*memory) return FALSE; @@ -162,7 +162,7 @@ index 39f0cef..179d4c6 100644 pVbe->pInt10->num = 0x10; pVbe->pInt10->ax = 0x4f04; switch (function) { -@@ -635,6 +671,7 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction function, +@@ -635,6 +671,7 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveR pVbe->pInt10->es = SEG_ADDR(*real_mode_pages); pVbe->pInt10->bx = SEG_OFF(*real_mode_pages); xf86ExecX86int10(pVbe->pInt10); @@ -170,7 +170,7 @@ index 39f0cef..179d4c6 100644 return (R16(pVbe->pInt10->ax) == 0x4f); } -@@ -652,11 +689,13 @@ VBEBankSwitch(vbeInfoPtr pVbe, unsigned int iBank, int window) +@@ -652,11 +689,13 @@ VBEBankSwitch(vbeInfoPtr pVbe, unsigned Output: */ @@ -184,7 +184,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return FALSE; -@@ -690,12 +729,14 @@ VBESetGetLogicalScanlineLength(vbeInfoPtr pVbe, vbeScanwidthCommand command, +@@ -690,12 +729,14 @@ VBESetGetLogicalScanlineLength(vbeInfoPt DX := Maximum Number of Scan Lines */ @@ -199,7 +199,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return FALSE; -@@ -715,12 +756,15 @@ VBESetGetLogicalScanlineLength(vbeInfoPtr pVbe, vbeScanwidthCommand command, +@@ -715,12 +756,15 @@ VBESetGetLogicalScanlineLength(vbeInfoPt Bool VBESetDisplayStart(vbeInfoPtr pVbe, int x, int y, Bool wait_retrace) { @@ -215,7 +215,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return FALSE; -@@ -731,10 +775,12 @@ VBESetDisplayStart(vbeInfoPtr pVbe, int x, int y, Bool wait_retrace) +@@ -731,10 +775,12 @@ VBESetDisplayStart(vbeInfoPtr pVbe, int Bool VBEGetDisplayStart(vbeInfoPtr pVbe, int *x, int *y) { @@ -228,7 +228,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return FALSE; -@@ -761,6 +807,7 @@ VBESetGetDACPaletteFormat(vbeInfoPtr pVbe, int bits) +@@ -761,6 +807,7 @@ VBESetGetDACPaletteFormat(vbeInfoPtr pVb BH := Current number of bits of color per primary */ @@ -236,7 +236,7 @@ index 39f0cef..179d4c6 100644 pVbe->pInt10->num = 0x10; pVbe->pInt10->ax = 0x4f08; if (!bits) -@@ -768,6 +815,7 @@ VBESetGetDACPaletteFormat(vbeInfoPtr pVbe, int bits) +@@ -768,6 +815,7 @@ VBESetGetDACPaletteFormat(vbeInfoPtr pVb else pVbe->pInt10->bx = (bits & 0x00ff) << 8; xf86ExecX86int10(pVbe->pInt10); @@ -244,7 +244,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return 0; -@@ -805,6 +853,8 @@ VBESetGetPaletteData(vbeInfoPtr pVbe, Bool set, int first, int num, +@@ -805,6 +853,8 @@ VBESetGetPaletteData(vbeInfoPtr pVbe, Bo DS := Selector for memory mapped registers */ @@ -253,7 +253,7 @@ index 39f0cef..179d4c6 100644 pVbe->pInt10->num = 0x10; pVbe->pInt10->ax = 0x4f09; if (!secondary) -@@ -818,6 +868,7 @@ VBESetGetPaletteData(vbeInfoPtr pVbe, Bool set, int first, int num, +@@ -818,6 +868,7 @@ VBESetGetPaletteData(vbeInfoPtr pVbe, Bo if (set) memcpy(pVbe->memory, data, num * sizeof(CARD32)); xf86ExecX86int10(pVbe->pInt10); @@ -275,7 +275,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return NULL; -@@ -967,6 +1020,7 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int clock) +@@ -967,6 +1020,7 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mo AX := VBE Return Status ECX := Closest pixel clock */ @@ -283,7 +283,7 @@ index 39f0cef..179d4c6 100644 pVbe->pInt10->num = 0x10; pVbe->pInt10->ax = 0x4f0b; -@@ -974,6 +1028,7 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int clock) +@@ -974,6 +1028,7 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mo pVbe->pInt10->cx = clock; pVbe->pInt10->dx = mode; xf86ExecX86int10(pVbe->pInt10); @@ -291,7 +291,7 @@ index 39f0cef..179d4c6 100644 if (R16(pVbe->pInt10->ax) != 0x4f) return 0; -@@ -981,6 +1036,92 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int clock) +@@ -981,6 +1036,92 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mo return pVbe->pInt10->cx; } @@ -416,11 +416,11 @@ index 39f0cef..179d4c6 100644 if ((pVbe->pInt10->ax & 0xff) != 0x4f) { xf86DrvMsgVerb(screen, X_INFO, 3, "VESA VBE PanelID invalid\n"); -diff --git a/hw/xfree86/vbe/vbe.h b/hw/xfree86/vbe/vbe.h -index 3907c53..9b37f46 100644 ---- a/hw/xfree86/vbe/vbe.h -+++ b/hw/xfree86/vbe/vbe.h -@@ -336,6 +336,9 @@ VBEVesaSaveRestore(vbeInfoPtr pVbe, vbeSaveRestorePtr vbe_sr, +Index: xorg-server-21.1.0/hw/xfree86/int10/vbe.h +=================================================================== +--- xorg-server-21.1.0.orig/hw/xfree86/int10/vbe.h ++++ xorg-server-21.1.0/hw/xfree86/int10/vbe.h +@@ -335,6 +335,9 @@ VBEVesaSaveRestore(vbeInfoPtr pVbe, vbeS extern _X_EXPORT int VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int Clock); extern _X_EXPORT Bool VBEDPMSSet(vbeInfoPtr pVbe, int mode); diff --git a/xorg-server-1.20.13.tar.xz b/xorg-server-1.20.13.tar.xz deleted file mode 100644 index 99274c6..0000000 --- a/xorg-server-1.20.13.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:40aa4e96a56a81a301f15a9b10e06a22700f12b42d9e0e453c7f11d354386300 -size 5122260 diff --git a/xorg-server-21.1.0.tar.xz b/xorg-server-21.1.0.tar.xz new file mode 100644 index 0000000..77568cb --- /dev/null +++ b/xorg-server-21.1.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50c316dd8f4472cb60dfb285aa46ca6855d7626cecfd8330f6c51da743c1fe42 +size 4951620 diff --git a/xorg-server-provides b/xorg-server-provides index 5274abb..e031cbd 100644 --- a/xorg-server-provides +++ b/xorg-server-provides @@ -1,4 +1,4 @@ -Provides: X11_ABI_XINPUT = 24.1 -Provides: X11_ABI_VIDEODRV = 24.1 +Provides: X11_ABI_XINPUT = 24.4 +Provides: X11_ABI_VIDEODRV = 25.2 Provides: X11_ABI_ANSIC = 0.4 Provides: X11_ABI_EXTENSION = 10.0 diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index f2e916f..d6f66ad 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,40 @@ +------------------------------------------------------------------- +Wed Oct 27 11:58:32 UTC 2021 - Stefan Dirsch + +- Update to version 21.1.0 + * The meson support is now fully mature. While autotools support + will still be kept for this release series, it will be dropped + afterwards. + * Glamor support for Xvfb. + * Variable refresh rate support in the modesetting driver. + * XInput 2.4 support which adds touchpad gestures. + * DMX DDX has been removed. + * X server now correctly reports display DPI in more cases. This + may affect rendering of client applications that have their own + workarounds for hi-DPI screens. + * A large number of small features and various bug fixes. +- updated xorg-server-provides +- supersedes patches + * U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch + * U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch + * U_glamor_egl-Reject-OpenGL-2.1-early-on.patch + * u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch +- refreshed patches + * N_fix-dpi-values.diff + * N_zap_warning_xserver.diff + * u_modesetting-Fix-dirty-updates-for-sw-rotation.patch + * u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch + * u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch +- disabled n_xserver-optimus-autoconfig-hack.patch, which I believe is + superseded by: + commit 078277e4d92f05a90c4715d61b89b9d9d38d68ea + Author: Dave Airlie + Date: Fri Aug 17 09:49:24 2012 +1000 + + xf86: autobind GPUs to the screen +- added pkgconfig(libxcvt) +- cvt binary moved to libxcvt0 package + ------------------------------------------------------------------- Fri Jul 30 15:07:59 UTC 2021 - Stefan Dirsch diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 417b1af..07184d7 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -40,7 +40,7 @@ %endif Name: xorg-x11-server -Version: 1.20.13 +Version: 21.1.0 Release: 0 URL: http://xorg.freedesktop.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -72,7 +72,6 @@ BuildRequires: pkgconfig(bigreqsproto) >= 1.1.0 BuildRequires: pkgconfig(compositeproto) BuildRequires: pkgconfig(damageproto) >= 1.1 BuildRequires: pkgconfig(dbus-1) >= 1.0 -BuildRequires: pkgconfig(dmx) >= 1.0.99.1 BuildRequires: pkgconfig(dri) >= 7.8.0 BuildRequires: pkgconfig(dri2proto) BuildRequires: pkgconfig(dri3proto) @@ -96,6 +95,7 @@ BuildRequires: pkgconfig(inputproto) >= 1.9.99.902 BuildRequires: pkgconfig(kbproto) >= 1.0.3 BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(libxcvt) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(pciaccess) >= 0.8.0 BuildRequires: pkgconfig(pixman-1) >= 0.24 @@ -219,7 +219,6 @@ Patch101: u_02-DIX-ConfineTo-Don-t-bother-about-the-bounding-box-when-grab # PATCH-FIX-UPSTREAM u_x86emu-include-order.patch schwab@suse.de -- Change include order to avoid conflict with system header, remove duplicate definitions Patch104: u_xorg-server-xdmcp.patch -Patch112: u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch Patch115: N_Disable-HW-Cursor-for-cirrus-and-mgag200-kernel-modules.patch @@ -241,14 +240,8 @@ Patch1222: b_sync-fix.patch Patch1401: u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch -Patch1502: U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch - Patch1503: u_xfree86-Do-not-claim-pci-slots-if-fb-slot-is-already.patch -Patch1600: U_glamor_egl-Reject-OpenGL-2.1-early-on.patch - -Patch1801: U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch - Patch1900: u_no-lto-for-tests.patch Patch1910: u_modesetting-Fix-dirty-updates-for-sw-rotation.patch @@ -257,7 +250,7 @@ Patch1910: u_modesetting-Fix-dirty-updates-for-sw-rotation.patch This package contains the X.Org Server. %package extra -Summary: Additional Xservers (Xdmx, Xephyr, Xnest) +Summary: Additional Xservers Xephyr, Xnest) Group: System/X11/Servers/XF86_4 Requires: Mesa Requires: xkbcomp @@ -267,7 +260,7 @@ Provides: xorg-x11-Xnest Obsoletes: xorg-x11-Xnest %description extra -This package contains additional Xservers (Xdmx, Xephyr, Xnest). +This package contains additional Xservers (Xephyr, Xnest). %package Xvfb Summary: Virtual Xserver Xvfb @@ -379,7 +372,6 @@ sh %{SOURCE92} --verify . %{SOURCE91} %patch100 -p1 #%patch101 -p1 %patch104 -p1 -%patch112 -p1 %patch115 -p1 %patch117 -p1 %patch160 -p1 @@ -388,7 +380,13 @@ sh %{SOURCE92} --verify . %{SOURCE91} ### not applicable anymore #%patch210 -p1 %patch215 -p1 -%patch1000 -p1 +### apparently supersed by upstream +### commit 078277e4d92f05a90c4715d61b89b9d9d38d68ea +### Author: Dave Airlie +### Date: Fri Aug 17 09:49:24 2012 +1000 +### +### xf86: autobind GPUs to the screen +#%patch1000 -p1 ### disabled for now #%patch1162 -p1 @@ -397,10 +395,7 @@ sh %{SOURCE92} --verify . %{SOURCE91} ### patch222 might not be applicable anymore #%patch1222 -p1 %patch1401 -p1 -%patch1502 -p1 %patch1503 -p1 -%patch1600 -p1 -%patch1801 -p1 %patch1900 -p1 %patch1910 -p1 @@ -422,7 +417,6 @@ export PCI_TXT_IDS_DIR=%{pci_ids_dir} --enable-dri2 \ --enable-dri3 \ --enable-glamor \ - --enable-dmx \ --enable-xnest \ --enable-kdrive \ --enable-kdrive-evdev \ @@ -606,7 +600,6 @@ fi %dir %{_libdir}/xorg %{_libdir}/xorg/protocol.txt %{_mandir}/man1/* -%exclude %{_mandir}/man1/Xdmx.1* %exclude %{_mandir}/man1/Xephyr.1* %exclude %{_mandir}/man1/Xnest.1* %dir %{_datadir}/factory @@ -622,7 +615,6 @@ fi %endif %{_bindir}/X -%{_bindir}/cvt %{_bindir}/gtf %{_libdir}/xorg/modules/ %{_mandir}/man4/* @@ -649,19 +641,6 @@ fi %defattr(-,root,root) %{_bindir}/Xephyr %{_bindir}/Xnest -%{_bindir}/Xdmx -%{_bindir}/dmxaddinput -%{_bindir}/dmxaddscreen -%{_bindir}/dmxinfo -%{_bindir}/dmxreconfig -%{_bindir}/dmxresize -%{_bindir}/dmxrminput -%{_bindir}/dmxrmscreen -%{_bindir}/dmxtodmx -%{_bindir}/dmxwininfo -%{_bindir}/vdltodmx -%{_bindir}/xdmxconfig -%{_mandir}/man1/Xdmx.1* %{_mandir}/man1/Xephyr.1* %{_mandir}/man1/Xnest.1* From 218a4beb2bba20faf7e2ac1a4bd6c3e91becc357b5654f61df2a0924e96e719c Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Sun, 7 Nov 2021 10:07:58 +0000 Subject: [PATCH 2/3] - Update to version 21.1.1 * s/__/@/ in inputtestdrv manpage * Make xf86CompatOutput() return NULL when there are no privates * Makefile.am: Add missing meson build files to release tarball OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=805 --- xorg-server-21.1.0.tar.xz | 3 --- xorg-server-21.1.1.tar.xz | 3 +++ xorg-x11-server.changes | 8 ++++++++ xorg-x11-server.spec | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) delete mode 100644 xorg-server-21.1.0.tar.xz create mode 100644 xorg-server-21.1.1.tar.xz diff --git a/xorg-server-21.1.0.tar.xz b/xorg-server-21.1.0.tar.xz deleted file mode 100644 index 77568cb..0000000 --- a/xorg-server-21.1.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:50c316dd8f4472cb60dfb285aa46ca6855d7626cecfd8330f6c51da743c1fe42 -size 4951620 diff --git a/xorg-server-21.1.1.tar.xz b/xorg-server-21.1.1.tar.xz new file mode 100644 index 0000000..f8c7dbb --- /dev/null +++ b/xorg-server-21.1.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:782e7fef2ca0c7cbe60a937b8bf42dac69c904fb841950fd0363e1c2346ea755 +size 4958508 diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index d6f66ad..fdf3a5e 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sun Nov 7 09:22:47 UTC 2021 - Stefan Dirsch + +- Update to version 21.1.1 + * s/__/@/ in inputtestdrv manpage + * Make xf86CompatOutput() return NULL when there are no privates + * Makefile.am: Add missing meson build files to release tarball + ------------------------------------------------------------------- Wed Oct 27 11:58:32 UTC 2021 - Stefan Dirsch diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 07184d7..d8ffd59 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -40,7 +40,7 @@ %endif Name: xorg-x11-server -Version: 21.1.0 +Version: 21.1.1 Release: 0 URL: http://xorg.freedesktop.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build From e19d17a41b299124cfdc0fe4cc9e658e74224ae92de153a0db01fe8297ab09d9 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Thu, 11 Nov 2021 09:29:13 +0000 Subject: [PATCH 3/3] - U_hw-xfree86-Propagate-physical-dimensions-from-DRM-co.patch * reverse apply this one to go back to fixed 96 dpi (gitlab fdo/xserver issue#1241) - N_fix-dpi-values.diff * back to version for xserver < 21.1.0 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=806 --- N_fix-dpi-values.diff | 8 +- ...gate-physical-dimensions-from-DRM-co.patch | 136 ++++++++++++++++++ xorg-x11-server.changes | 9 ++ xorg-x11-server.spec | 3 + 4 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 U_hw-xfree86-Propagate-physical-dimensions-from-DRM-co.patch diff --git a/N_fix-dpi-values.diff b/N_fix-dpi-values.diff index 0197ff2..7963943 100644 --- a/N_fix-dpi-values.diff +++ b/N_fix-dpi-values.diff @@ -6,7 +6,7 @@ Index: hw/xfree86/common/xf86Helper.c =================================================================== --- hw/xfree86/common/xf86Helper.c.orig +++ hw/xfree86/common/xf86Helper.c -@@ -883,12 +883,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int +@@ -875,12 +875,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int else if (pScrn->widthmm > 0 || pScrn->heightmm > 0) { from = X_CONFIG; if (pScrn->widthmm > 0) { @@ -33,9 +33,9 @@ Index: hw/xfree86/common/xf86Helper.c } if (pScrn->xDpi > 0 && pScrn->yDpi <= 0) pScrn->yDpi = pScrn->xDpi; -@@ -927,12 +937,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int - pScrn->widthmm = probedWidthmm; - pScrn->heightmm = probedHeightmm; +@@ -919,12 +929,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int + pScrn->widthmm = ddcWidthmm; + pScrn->heightmm = ddcHeightmm; if (pScrn->widthmm > 0) { - pScrn->xDpi = - (int) ((double) pScrn->virtualX * MMPERINCH / pScrn->widthmm); diff --git a/U_hw-xfree86-Propagate-physical-dimensions-from-DRM-co.patch b/U_hw-xfree86-Propagate-physical-dimensions-from-DRM-co.patch new file mode 100644 index 0000000..bbaa418 --- /dev/null +++ b/U_hw-xfree86-Propagate-physical-dimensions-from-DRM-co.patch @@ -0,0 +1,136 @@ +From 05b3c681ea2f478c0cb941c2f8279919cf78de6d Mon Sep 17 00:00:00 2001 +From: Daniel Strnad +Date: Tue, 19 May 2020 15:52:35 +0200 +Subject: [PATCH] hw/xfree86: Propagate physical dimensions from DRM connector + +Physical dimmension of display can be obtained not just by configuration or +DDC, but also directly from kernel via drmModeGetConnector(). Until now +xserver silently discarded these values even when no configuration nor EDID +were present and fallbacked to default DPI. +--- + hw/xfree86/common/xf86Helper.c | 30 ++++++++++++++++++------------ + hw/xfree86/modes/xf86Crtc.c | 6 ++++-- + hw/xfree86/modes/xf86RandR12.c | 6 ++++++ + 3 files changed, 28 insertions(+), 14 deletions(-) + +diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c +index 0389945a7..d03382d26 100644 +--- a/hw/xfree86/common/xf86Helper.c ++++ b/hw/xfree86/common/xf86Helper.c +@@ -55,6 +55,7 @@ + #include "xf86Xinput.h" + #include "xf86InPriv.h" + #include "mivalidate.h" ++#include "xf86Crtc.h" + + /* For xf86GetClocks */ + #if defined(CSRG_BASED) || defined(__GNU__) +@@ -851,8 +852,9 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + { + MessageType from = X_DEFAULT; + xf86MonPtr DDC = (xf86MonPtr) (pScrn->monitor->DDC); +- int ddcWidthmm, ddcHeightmm; ++ int probedWidthmm, probedHeightmm; + int widthErr, heightErr; ++ xf86OutputPtr compat = xf86CompatOutput(pScrn); + + /* XXX Maybe there is no need for widthmm/heightmm in ScrnInfoRec */ + pScrn->widthmm = pScrn->monitor->widthmm; +@@ -862,11 +864,15 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + /* DDC gives display size in mm for individual modes, + * but cm for monitor + */ +- ddcWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */ +- ddcHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */ ++ probedWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */ ++ probedHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */ ++ } ++ else if (compat && compat->mm_width > 0 && compat->mm_height > 0) { ++ probedWidthmm = compat->mm_width; ++ probedHeightmm = compat->mm_height; + } + else { +- ddcWidthmm = ddcHeightmm = 0; ++ probedWidthmm = probedHeightmm = 0; + } + + if (monitorResolution > 0) { +@@ -892,15 +898,15 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + pScrn->widthmm, pScrn->heightmm); + + /* Warn if config and probe disagree about display size */ +- if (ddcWidthmm && ddcHeightmm) { ++ if (probedWidthmm && probedHeightmm) { + if (pScrn->widthmm > 0) { +- widthErr = abs(ddcWidthmm - pScrn->widthmm); ++ widthErr = abs(probedWidthmm - pScrn->widthmm); + } + else { + widthErr = 0; + } + if (pScrn->heightmm > 0) { +- heightErr = abs(ddcHeightmm - pScrn->heightmm); ++ heightErr = abs(probedHeightmm - pScrn->heightmm); + } + else { + heightErr = 0; +@@ -909,17 +915,17 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + /* Should include config file name for monitor here */ + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Probed monitor is %dx%d mm, using Displaysize %dx%d mm\n", +- ddcWidthmm, ddcHeightmm, pScrn->widthmm, ++ probedWidthmm, probedHeightmm, pScrn->widthmm, + pScrn->heightmm); + } + } + } +- else if (ddcWidthmm && ddcHeightmm) { ++ else if (probedWidthmm && probedHeightmm) { + from = X_PROBED; + xf86DrvMsg(pScrn->scrnIndex, from, "Display dimensions: (%d, %d) mm\n", +- ddcWidthmm, ddcHeightmm); +- pScrn->widthmm = ddcWidthmm; +- pScrn->heightmm = ddcHeightmm; ++ probedWidthmm, probedHeightmm); ++ pScrn->widthmm = probedWidthmm; ++ pScrn->heightmm = probedHeightmm; + if (pScrn->widthmm > 0) { + pScrn->xDpi = + (int) ((double) pScrn->virtualX * MMPERINCH / pScrn->widthmm); +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index c6e89e66f..202791774 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -3256,8 +3256,10 @@ xf86OutputSetEDID(xf86OutputPtr output, xf86MonPtr edid_mon) + free(output->MonInfo); + + output->MonInfo = edid_mon; +- output->mm_width = 0; +- output->mm_height = 0; ++ if (edid_mon) { ++ output->mm_width = 0; ++ output->mm_height = 0; ++ } + + if (debug_modes) { + xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n", +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 50cbd043e..d4651f4e8 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -806,6 +806,12 @@ xf86RandR12CreateScreenResources(ScreenPtr pScreen) + mmWidth = output->conf_monitor->mon_width; + mmHeight = output->conf_monitor->mon_height; + } ++ else if (output && ++ (output->mm_width > 0 && ++ output->mm_height > 0)) { ++ mmWidth = output->mm_width; ++ mmHeight = output->mm_height; ++ } + else { + /* + * Otherwise, just set the screen to DEFAULT_DPI +-- +2.26.2 + diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index fdf3a5e..08624d2 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Thu Nov 11 08:35:39 UTC 2021 - Stefan Dirsch + +- U_hw-xfree86-Propagate-physical-dimensions-from-DRM-co.patch + * reverse apply this one to go back to fixed 96 dpi (gitlab + fdo/xserver issue#1241) +- N_fix-dpi-values.diff + * back to version for xserver < 21.1.0 + ------------------------------------------------------------------- Sun Nov 7 09:22:47 UTC 2021 - Stefan Dirsch diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index d8ffd59..1ca2153 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -207,6 +207,7 @@ Patch1: N_default-module-path.diff Patch2: N_zap_warning_xserver.diff Patch3: N_driver-autoconfig.diff Patch4: N_fix_fglrx_screendepth_issue.patch +Patch5: U_hw-xfree86-Propagate-physical-dimensions-from-DRM-co.patch Patch6: N_fix-dpi-values.diff Patch7: N_Install-Avoid-failure-on-wrapper-installation.patch Patch8: u_xorg-wrapper-Drop-supplemental-group-IDs.patch @@ -361,6 +362,8 @@ sh %{SOURCE92} --verify . %{SOURCE91} %patch2 -p1 %patch3 -p0 %patch4 -p0 +# back to 96 dpi fix +%patch5 -p1 -R %patch6 -p0 %patch7 -p1 %patch8 -p1