Skip to content
Snippets Groups Projects
  1. Oct 25, 2018
  2. Oct 16, 2018
  3. Oct 15, 2018
  4. Oct 12, 2018
    • Adam Jackson's avatar
      f5dc787f
    • Adam Jackson's avatar
      glamor/egl: Avoid crashing on broken configurations · 4795c069
      Adam Jackson authored
      
      0a9415cf apparently can tickle bugs in the GL stack where glGetString
      returns NULL, presumably because the eglMakeCurrent() didn't manage to
      actually install a dispatch table and you're hitting a stub function.
      That's clearly not our bug, but if it happens we should at least not
      crash. Notice this case and fail gently.
      
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit af151895)
      4795c069
    • Adam Jackson's avatar
      glamor_egl: Don't initialize on llvmpipe · 1e3c5d61
      Adam Jackson authored
      
      Mesa started supporting GL_OES_EGL_image on llvmpipe in 17.3, after this
      commit:
      
          commit bbdeddd5fd0b797e1e281f058338b3da4d98029d
          Author: Gurchetan Singh <gurchetansingh@chromium.org>
          Date:   Tue Aug 1 14:49:33 2017 -0700
      
              st/dri: add drisw image extension
      
      That's pretty cool, but it means glamor now thinks it can initialize on
      llvmpipe. This is almost certainly not what anyone wants, as glamor on
      llvmpipe is pretty much uniformly slower than fb.
      
      This fixes both Xorg and Xwayland to refuse glamor in such a setup.
      Xephyr is left alone, both because glamor is not the default there and
      because Xephyr+glamor+llvmpipe is one of the easier ways to get xts to
      exercise glamor.
      
      The (very small) downside of this change is that you lose DRI3 support.
      This wouldn't have helped you very much (since an lp glamor blit is
      slower than a pixman blit), but it would eliminate the PutImage overhead
      for llvmpipe's glXSwapBuffers. A future change should add DRI3 support
      for the fb-only case.
      
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 0a9415cf)
      1e3c5d61
  5. Oct 05, 2018
  6. Oct 04, 2018
    • Cedric Roux's avatar
      miext/damage: take care of the coordinate mode in damagePolyPoint · 94033359
      Cedric Roux authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      The mode (CoordModeOrigin or CoordModePrevious) was not taken into
      account when computing the box. The result was a bad drawing of
      points in some situations (on my hardware/software configuration,
      calling XDrawString followed by XDrawPoints in the mode
      CoordModePrevious).
      
      Signed-off-by: default avatarCedric Roux <sed@free.fr>
      Signed-off-by: default avatarEric Anholt <eric@anholt.net>
      (cherry picked from commit bc36594e)
      94033359
    • Olivier Fourdan's avatar
      xwayland: Use `double` for `xwl_tablet_tool` · c26a47b4
      Olivier Fourdan authored
      
      So we do not lose subpixel precision in Xwayland.
      
      Suggested-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      Signed-off-by: default avatarOlivier Fourdan <ofourdan@redhat.com>
      Closes: libinput/libinput#138
      (cherry picked from commit 734b2d69)
      c26a47b4
    • Adam Jackson's avatar
      xfree86: Fix Option "MaxClients" validation · fb01b238
      Adam Jackson authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      The old code would not in fact validate the option value, though it
      might complain about it in the log. It also didn't let you set some
      legal values that the -maxclients command line option would.
      
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 7d689f04)
      fb01b238
    • Dave Airlie's avatar
      devices: break after finding and removing device from lists · cc4051ad
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Coverity complains about a use after free in here after the
      freeing, I can't follow the linked list so well, but whot
      says the device can only be on one list once, so break should
      fix it.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit ba0f5d85)
      cc4051ad
    • Dave Airlie's avatar
      mibltblt: free prgnSrcClip on error path. · 64a7aac2
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Pointed out by coverity.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit c4591ea1)
      64a7aac2
    • Dave Airlie's avatar
      xkb: fix what looks to be a copy-paste error with first vs firstMM · fcbdb7c8
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Pointed out by coverity.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit 75839395)
      fcbdb7c8
    • Dave Airlie's avatar
      posix_tty: free leak of xf86SetStrOption return value. · 83ef0283
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Pointed out by coverity.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit cad3a1a8)
      83ef0283
    • Dave Airlie's avatar
      modesetting: get pEnt after error checks · 66d36010
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      This saves us having to make sure we clean it up.
      
      Pointed out by coverity.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit b6c29a88)
      66d36010
    • Dave Airlie's avatar
      glamor: fix leak of fs_getcolor_source. · 795c58a1
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      This is created using XNFstrdup, so it needs to be freed.
      
      Pointed out by coverity.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit f0a5c0d1)
      795c58a1
    • Dave Airlie's avatar
      fboverlay: move bpp checks above malloc · bb384d0b
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Avoids having to free the malloced object.
      
      Pointed out by coverity.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit c7fa6a0a)
      bb384d0b
    • Dave Airlie's avatar
      xi: free modifiers_failed on error path. (v2) · 26a83f98
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Pointed out by coverity.
      
      v2: set modifies_failed to NULL at start (whot)
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit 51ae6126)
      26a83f98
    • Dave Airlie's avatar
      shm: move shmsize verify before allocating the drawable. · bdeab786
      Dave Airlie authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Otherwise if the VERIFY_SHMSIZE macro fails we leak the drawables
      we allocated earlier.
      
      Noticed by coverity scan.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      (cherry picked from commit 3439929c)
      bdeab786
    • Adam Jackson's avatar
      modesetting: Document Option "DoubleShadow" in the man page · 8e646ca9
      Adam Jackson authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit c4f3e42f)
      8e646ca9
    • Adam Jackson's avatar
      modesetting: Lie less in the man page · fdb80a32
      Adam Jackson authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      We don't support 8bpp, and we do have acceleration.
      
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 0dc2c419)
      fdb80a32
    • Olivier Fourdan's avatar
      xwayland: Remove xwl_present_window from privates on cleanup · cffac815
      Olivier Fourdan authored
      Xwayland's `xwl_destroy_window()` invokes `xwl_present_cleanup()`
      before the common `DestroyWindow()`.
      
      But then `DestroyWindow()` calls `present_destroy_window()` which will
      possibly end up in `xwl_present_abort_vblank()` which will try to access
      data that was previously freed by `xwl_present_cleanup()`:
      
        Invalid read of size 8
           at 0x434184: xwl_present_abort_vblank (xwayland-present.c:378)
           by 0x53785B: present_wnmd_abort_vblank (present_wnmd.c:651)
           by 0x53695A: present_free_window_vblank (present_screen.c:87)
           by 0x53695A: present_destroy_window (present_screen.c:152)
           by 0x42A90D: xwl_destroy_window (xwayland.c:653)
           by 0x584298: compDestroyWindow (compwindow.c:613)
           by 0x53CEE3: damageDestroyWindow (damage.c:1570)
           by 0x4F1BB8: DbeDestroyWindow (dbe.c:1326)
           by 0x46F7F6: FreeWindowResources (window.c:1031)
           by 0x472847: DeleteWindow (window.c:1099)
           by 0x46B54C: doFreeResource (resource.c:880)
           by 0x46C706: FreeClientResources (resource.c:1146)
           by 0x446ADE: CloseDownClient (dispatch.c:3473)
         Address 0x182abde0 is 80 bytes inside a block of size 112 free'd
           at 0x4C2FDAC: free (vg_replace_malloc.c:530)
           by 0x42A937: xwl_destroy_window (xwayland.c:647)
           by 0x584298: compDestroyWindow (compwindow.c:613)
           by 0x53CEE3: damageDestroyWindow (damage.c:1570)
           by 0x4F1BB8: DbeDestroyWindow (dbe.c:1326)
           by 0x46F7F6: FreeWindowResources (window.c:1031)
           by 0x472847: DeleteWindow (window.c:1099)
           by 0x46B54C: doFreeResource (resource.c:880)
           by 0x46C706: FreeClientResources (resource.c:1146)
           by 0x446ADE: CloseDownClient (dispatch.c:3473)
           by 0x446DA5: ProcKillClient (dispatch.c:3279)
           by 0x4476AF: Dispatch (dispatch.c:479)
         Block was alloc'd at
           at 0x4C30B06: calloc (vg_replace_malloc.c:711)
           by 0x433F46: xwl_present_window_get_priv (xwayland-present.c:54)
           by 0x434228: xwl_present_get_crtc (xwayland-present.c:302)
           by 0x539728: proc_present_query_capabilities (present_request.c:227)
           by 0x4476AF: Dispatch (dispatch.c:479)
           by 0x44B5B5: dix_main (main.c:276)
           by 0x75F611A: (below main) (libc-start.c:308)
      
      This is because `xwl_present_cleanup()` frees the memory but does not
      remove it from the window's privates, and `xwl_present_abort_vblank()`
      will still find it and hence try to access that freed memory...
      
      Remove `xwl_present_window` from window's privates on cleanup so that no
      other function can find and reuse that data once it's freed.
      
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1616269
      
      
      Signed-off-by: default avatarOlivier Fourdan <ofourdan@redhat.com>
      (cherry picked from commit 3f31f569)
      cffac815
    • Lionel Landwerlin's avatar
      xwayland: fix access to invalid pointer · 8dd7173e
      Lionel Landwerlin authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      xwl_output->randr_crtc is used in the update_screen_size() function :
      
      ==5331== Invalid read of size 4
      ==5331==    at 0x15263D: update_screen_size (xwayland-output.c:190)
      ==5331==    by 0x152C48: xwl_output_remove (xwayland-output.c:413)
      ==5331==    by 0x6570FCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x657093E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x4DDB183: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD79D8: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD8EA3: wl_display_dispatch_queue_pending (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x14BCCA: xwl_read_events (xwayland.c:814)
      ==5331==    by 0x2AC0D0: ospoll_wait (ospoll.c:651)
      ==5331==    by 0x2A5322: WaitForSomething (WaitFor.c:208)
      ==5331==    by 0x27574B: Dispatch (dispatch.c:421)
      ==5331==    by 0x279945: dix_main (main.c:276)
      ==5331==  Address 0x1aacb5f4 is 36 bytes inside a block of size 154 free'd
      ==5331==    at 0x48369EB: free (vg_replace_malloc.c:530)
      ==5331==    by 0x1F8AE8: RROutputDestroyResource (rroutput.c:421)
      ==5331==    by 0x29A2AC: doFreeResource (resource.c:880)
      ==5331==    by 0x29AE5B: FreeResource (resource.c:910)
      ==5331==    by 0x152BE0: xwl_output_remove (xwayland-output.c:408)
      ==5331==    by 0x6570FCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x657093E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x4DDB183: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD79D8: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD8EA3: wl_display_dispatch_queue_pending (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x14BCCA: xwl_read_events (xwayland.c:814)
      ==5331==    by 0x2AC0D0: ospoll_wait (ospoll.c:651)
      ==5331==  Block was alloc'd at
      ==5331==    at 0x48357BF: malloc (vg_replace_malloc.c:299)
      ==5331==    by 0x1F93E0: RROutputCreate (rroutput.c:83)
      ==5331==    by 0x152A75: xwl_output_create (xwayland-output.c:361)
      ==5331==    by 0x14BE59: registry_global (xwayland.c:764)
      ==5331==    by 0x6570FCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x657093E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x4DDB183: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD79D8: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD8EA3: wl_display_dispatch_queue_pending (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x14BCCA: xwl_read_events (xwayland.c:814)
      ==5331==    by 0x2AC0D0: ospoll_wait (ospoll.c:651)
      ==5331==    by 0x2A5322: WaitForSomething (WaitFor.c:208)
      
      Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
      Reviewed-by: default avatarDaniel Stone <daniels@collabora.com>
      (cherry picked from commit 53ce2ba0)
      8dd7173e
    • Olivier Fourdan's avatar
      glx: check for indirect context in CreateContextAttribsARB() · 1191b23f
      Olivier Fourdan authored
      Commit 99f0365b "Add a command line argument for disabling indirect GLX"
      added a test to check if indirect context are enabled in
      `DoCreateContext()` but `__glXDisp_CreateContextAttribsARB()` doesn't
      use `DoCreateContext()` and doesn't check if indirect context is
      enabled.
      
      As a result, clients can still manage to create indirect contexts using
      `glXCreateContextAttribsARB()` even if indirect contexts are disabled,
      which can possibly crash Xservers such as Xwayland or Xephyr when the
      context is destroyed.
      
      To avoid the issue, check for `enableIndirectGLX` in
      `__glXDisp_CreateContextAttribsARB()` as well.
      
      Fixes: 99f0365b "Add a command line argument for disabling indirect GLX"
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107508
      
      
      Signed-off-by: default avatarOlivier Fourdan <ofourdan@redhat.com>
      (cherry picked from commit 75448671)
      1191b23f
    • Lionel Landwerlin's avatar
      present: fix freed pointer access · 1b0db2c7
      Lionel Landwerlin authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      When a vblank has been marked as aborted, it's going to be free in the
      flip_notify function when stopped. We can't notify it after it's
      stopped because the pointer is invalid.
      
      Valgrind backtrace:
      
      ==5331== Invalid read of size 8
      ==5331==    at 0x212B4D: present_vblank_notify (present_vblank.c:34)
      ==5331==    by 0x21439B: present_wnmd_flip_notify (present_wnmd.c:194)
      ==5331==    by 0x21439B: present_wnmd_event_notify (present_wnmd.c:228)
      ==5331==    by 0x156216: xwl_present_sync_callback (xwayland-present.c:282)
      ==5331==    by 0x6570FCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x657093E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x4DDB183: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD79D8: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD8EA3: wl_display_dispatch_queue_pending (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x14BCCA: xwl_read_events (xwayland.c:814)
      ==5331==    by 0x2AC0D0: ospoll_wait (ospoll.c:651)
      ==5331==    by 0x2A5322: WaitForSomething (WaitFor.c:208)
      ==5331==    by 0x27574B: Dispatch (dispatch.c:421)
      ==5331==  Address 0x1b44dc98 is 40 bytes inside a block of size 184 free'd
      ==5331==    at 0x48369EB: free (vg_replace_malloc.c:530)
      ==5331==    by 0x213B0A: present_wnmd_free_idle_vblanks (present_wnmd.c:118)
      ==5331==    by 0x213B0A: present_wnmd_flips_stop (present_wnmd.c:161)
      ==5331==    by 0x2143EF: present_wnmd_flip_notify (present_wnmd.c:192)
      ==5331==    by 0x2143EF: present_wnmd_event_notify (present_wnmd.c:228)
      ==5331==    by 0x156216: xwl_present_sync_callback (xwayland-present.c:282)
      ==5331==    by 0x6570FCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x657093E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
      ==5331==    by 0x4DDB183: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD79D8: ??? (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x4DD8EA3: wl_display_dispatch_queue_pending (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0)
      ==5331==    by 0x14BCCA: xwl_read_events (xwayland.c:814)
      ==5331==    by 0x2AC0D0: ospoll_wait (ospoll.c:651)
      ==5331==    by 0x2A5322: WaitForSomething (WaitFor.c:208)
      ==5331==  Block was alloc'd at
      ==5331==    at 0x48377D5: calloc (vg_replace_malloc.c:711)
      ==5331==    by 0x212D9F: present_vblank_create (present_vblank.c:69)
      ==5331==    by 0x214014: present_wnmd_pixmap (present_wnmd.c:610)
      ==5331==    by 0x21576C: proc_present_pixmap (present_request.c:150)
      ==5331==    by 0x27599D: Dispatch (dispatch.c:479)
      ==5331==    by 0x279945: dix_main (main.c:276)
      ==5331==    by 0x633AB16: (below main) (libc-start.c:310)
      
      v2: Still notify aborted flips (Roman)
      
      Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
      Reviewed-by: default avatarDaniel Stone <daniels@collabora.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107314
      
      
      Reviewed-by: default avatarRoman Gilg <subdiff@gmail.com>
      Tested-by: default avatarRoman Gilg <subdiff@gmail.com>
      (cherry picked from commit ce271535)
      1b0db2c7
    • Scott Anderson's avatar
      xwayland: use wayland axis_discrete event · 48300a77
      Scott Anderson authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      This prevents multiple scroll events happening for wayland compositors
      which send axis values other than 10. For example, libinput will
      typically return 15 for each scroll wheel step, and if a wayland
      compositor sends those to xwayland without normalising them, 2 scroll
      wheel steps will end up as 3 xorg scroll events. By listening for the
      discrete_axis event, this will now correctly send only 2 xorg scroll
      events.
      
      The wayland protocol gurantees that there will always be an axis event
      following an axis_discrete event. However, it does not gurantee that
      other events (including other axis_discrete+axis pairs) will not happen
      in between them. So we must keep a list of outstanding axis_discrete
      events.
      
      Signed-off-by: default avatarScott Anderson <scott@anderso.nz>
      Reviewed-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      (cherry picked from commit cd285922)
      48300a77
    • Jim Qu's avatar
      modesetting: code refactor for PRIME sync · cd19a752
      Jim Qu authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      The X will be crashed on the system with other DDX driver,
      such as amdgpu.
      
      show the log like:
      
      randr: falling back to unsynchronized pixmap sharing
      (EE)
      (EE) Backtrace:
      (EE) 0: /usr/lib/xorg/Xorg (xorg_backtrace+0x4e)
      (EE) 1: /usr/lib/xorg/Xorg (0x55cb0151a000+0x1b5ce9)
      (EE) 2: /lib/x86_64-linux-gnu/libpthread.so.0 (0x7f1587a1d000+0x11390)
      (EE)
      (EE) Segmentation fault at address 0x0
      (EE)
      
      The issue is that modesetting as the master, and amdgpu as the slave.
      Thus, when the master attempts to access pSlavePixPriv in ms_dirty_update(),
      problems result due to the fact that it's accessing AMD's 'ppriv' using the
      modesetting structure definition.
      
      Apart from fixing crash issue, the patch fix other issue in master interface
      in which driver should refer to master pixmap.
      
      Signed-off-by: default avatarJim Qu <Jim.Qu@amd.com>
      Reviewed-by: default avatarAlex Goins <agoins@nvidia.com>
      (cherry picked from commit f79e5368)
      cd19a752
    • Alex Goins's avatar
      randr: rrCheckPixmapBounding should only increase screen size · 5396a4aa
      Alex Goins authored and Olivier Fourdan's avatar Olivier Fourdan committed
      The purpose of rrCheckPixmapBounding() is to make sure that the fb is large
      enough to accommodate the region scanned out by a GPU screen. Currently, however,
      it will actually shrink the fb if it's larger than it needs to be.
      
      This is a problem when combining PRIME output slaving with arbitrary transforms
      with xrandr.
      
      Although arbitrary transforms are not supposed to constrain the size of the fb
      (https://lists.freedesktop.org/archives/xorg-devel/2018-January/055563.html
      
      ),
      xrandr will use RRSetScreenSize to resize the desktop to accommodate scaling
      transforms, e.g. scaling a 1920x1080 display to 3840x2160 will result in a
      desktop size of 3840x2160.
      
      In the case of PRIME, rrCheckPixmapBounding() will be called after
      RRSetScreenSize() and it will resize the fb back down to what it would be
      without the scaling transform, e.g. 1920x1080. This represents divergence in
      behavior between PRIME and non-PRIME outputs.
      
      I had originally made rrCheckPixmapBounding() account for arbitrary transforms,
      but realized that the fb being large enough to accommodate arbitrary transforms
      is not a hard requirement enforced in the server. Instead, this change simply
      makes it so that rrCheckPixmapBounding() will only resize the fb to be larger
      than it already is, preventing it from stepping on prior requests to increase
      the size of the fb.
      
      Signed-off-by: default avatarAlex Goins <agoins@nvidia.com>
      Reviewed-by: default avatarKeith Packard <keithp@keithp.com>
      Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
      (cherry picked from commit a90f3372)
      5396a4aa
    • Peter Hutterer's avatar
      dix: check_modmap_change() returns Success, not true · 051a0efc
      Peter Hutterer authored and Olivier Fourdan's avatar Olivier Fourdan committed
      
      Not sure what if anything calls XSetDeviceModifierMapping() but this would've
      failed all the time. check_modmap_change() returns Success but we were
      treating it like a boolean. Fix this.
      
      Reported-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      Reviewed-by: default avatarKeith Packard <keithp@keithp.com>
      (cherry picked from commit 4fe02b8d)
      051a0efc
  7. Aug 07, 2018
  8. Aug 02, 2018
  9. Aug 01, 2018
Loading