Skip to content
  1. Jul 19, 2024
  2. Jul 12, 2024
  3. Jul 11, 2024
  4. May 15, 2024
  5. May 14, 2024
  6. Feb 25, 2024
  7. Jan 24, 2024
  8. Sep 25, 2023
    • Hamza Mahfooz's avatar
      Enable TearFree if it's set to auto and VariableRefresh is enabled · 31a092ae
      Hamza Mahfooz authored and Shashank Sharma's avatar Shashank Sharma committed
      
      
      As of kernel commit 1ca67aba8d11 ("drm/amd/display: only accept async
      flips for fast updates"), we reject async flips that used to be silently
      degraded to vsync. However, this causes issues for VRR if TearFree isn't
      enabled, in particular we have seen that VRR fails to engage on a
      handful of tested applications and in one case we even observed an
      application soft hang. So, if TearFree is set to auto we should enable
      it if VariableRefresh is enabled and we should warn users if they try to
      enable VariableRefresh while TearFree is disabled.
      
      Signed-off-by: default avatarHamza Mahfooz <hamza.mahfooz@amd.com>
      31a092ae
  9. Jul 12, 2023
  10. Jul 11, 2023
    • Chris Bainbridge's avatar
      Fix segfault on dock suspend, unplug, resume · 2897e176
      Chris Bainbridge authored
      `drmmode_set_mode` can segfault if a USB-C dock with external monitors
      is disconnected during suspend. It appears that some data structures are
      not updated, but the associated `drmModeConnectorPtr` associated with
      those structures is NULL. Dereferencing that pointer results in Xorg
      crashing.
      
      Backtrace:
      
          (crtc=crtc@entry=0x55a0c7610390, fb=fb@entry=0x55a0c86d7410, mode=mode@entry=0x55a0c76103a8, x=x@entry=0, y=y@entry=0) at drmmode_display.c:1267
          (crtc=0x55a0c7610390, mode=0x55a0c76103a8, rotation=<optimized out>, x=<optimized out>, y=<optimized out>) at drmmode_display.c:1371
          (main=main@entry=0x55a0c63f4b40, argc=argc@entry=10, argv=argv@entry=0x7fffb7cefbf8)
          at ../sysdeps/nptl/libc_start_call_main.h:58
          (main=0x55a0c63f4b40, argc=10, argv=0x7fffb7cefbf8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffb7cefbe8) at ../csu/libc-start.c:381
      
      Fix this by checking the pointer before dereferencing it.
      
      Fixes: drm/amd#2375
      
      
      Signed-off-by: default avatarChris Bainbridge <chris.bainbridge@gmail.com>
      2897e176
  11. Feb 22, 2023
  12. Dec 05, 2022
  13. Nov 11, 2022
    • Mario Kleiner's avatar
      Fix primary output handling in amdgpu_crtc_covering_box(). · 2ec854d4
      Mario Kleiner authored
      
      
      Commit e39a3ee0
      tries to reintroduce the RandR primary output as a tie breaker
      in amdgpu_crtc_covering_box(), but that function wrongly
      assigns a void* devPrivate, which is actually a xf86CrtcPtr,
      to the RRCrtcPtr primary_crtc, a pointer target type mismatch!
      
      This causes a later pointer comparison of primary_crtc with
      RRCrtcPtr crtc to always fail, so that the user selected
      primary output can not ever successfully act as a tie-breaker
      when multiple candidate crtcs cover the same box area,
      defeating the whole purpose of that commit! Not sure how
      this failure could have ever evaded any basic testing.
      
      Fix this trivially by assigning the right variable.
      
      Successfully tested on a multi-display setup, verifying
      that the primary output now works as tie breaker as
      intended.
      
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Fixes: e39a3ee0 ("Prefer crtc of primary output for synchronization when screen has to crtcs with the same coverage")
      2ec854d4
  14. Sep 29, 2022
  15. Aug 18, 2022
  16. Aug 08, 2022
    • Kai-Heng Feng's avatar
      Initialize present extension for GPU screen · a3a012b6
      Kai-Heng Feng authored
      Some laptops have the external outputs routed to dGPU, when the external
      output over dGPU is the only display in reverse prime mode, we need
      present extension so fake CRTC won't be used.
      a3a012b6
  17. Apr 20, 2022
  18. Feb 22, 2022
  19. Feb 16, 2022
  20. Feb 14, 2022
  21. Jan 25, 2022
    • Mario Kleiner's avatar
      Add option for non-vsynced flips for "secondary" outputs. · 65c12736
      Mario Kleiner authored
      
      
      This is a straightforward port of a patch with the same name
      "modesetting: Add option for non-vsynced flips for "secondary"
      outputs." from X-Server master / X-Server 21.1. See server MR 742.
      The description below is therefore identical to that X-Server commit:
      
      Whenever an unredirected fullscreen window uses pageflipping for a
      DRI3/Present PresentPixmap() operation and the X-Screen has more than
      one active output, multiple crtc's need to execute pageflips. Only
      after the last flip has completed can the PresentPixmap operation
      as a whole complete.
      
      If a sync_flip is requested for the present, then the current
      implementation will synchronize each pageflip to the vblank of
      its associated crtc. This provides tear-free image presentation
      across all outputs, but introduces a different artifact, if not
      all outputs run at the same refresh rate with perfect synchrony:
      The slowest output throttles the presentation rate, and present
      completion is delayed to flip completion of the "latest" output
      to complete. This means degraded performance, e.g., a dual-display
      setup with a 144 Hz monitor and a 60 Hz monitor will always be
      throttled to at most 60 fps. It also means non-constant present
      rate if refresh cycles drift against each other, creating complex
      "beat patterns", tremors, stutters and periodic slowdowns - quite
      irritating!
      
      Such a scenario will be especially annoying if one uses multiple
      outputs in "mirror mode" aka "clone mode". One output will usually
      be the "production output" with the highest quality and fastest
      display attached, whereas a secondary mirror output just has a
      cheaper display for monitoring attached. Users care about perfect
      and perfectly timed tear-free presentation on the "production output",
      but cares less about quality on the secondary "mirror output". They
      are willing to trade quality on secondary outputs away in exchange
      for better presentation timing on the "production output".
      
      One example use case for such production + monitoring displays are
      neuroscience / medical science applications where one high quality
      display device is used to present visual animations to test subjects
      or patients in a fMRI scanner room (production display), whereas
      an operator monitors the same visual animations from a control room
      on a lower quality display. Presentation timing needs to be perfect,
      and animations high-speed and tear-free for the production display,
      whereas quality and timing don't matter for the monitoring display.
      
      This commit gives users the option to choose such a trade-off as
      opt-in:
      
      It adds a new boolean option "AsyncFlipSecondaries" to the device section
      of xorg.conf. If this option is specified as true, then DRI3 pageflip
      behaviour changes as follows:
      
      1. The "reference crtc" for a windows PresentPixmap operation does a
         vblank synced flip, or a DRM_MODE_PAGE_FLIP_ASYNC non-synchronized
         flip, as requested by the caller, just as in the past. Typically
         flips will be requested to be vblank synchronized for tear-free
         presentation. The "reference crtc" is the one chosen by the caller
         to drive presentation timing (as specified by PresentPixmap()'s
         "target_msc", "divisor", "remainder" parameters and implemented by
         vblank events) and to deliver Present completion timestamps (msc
         and ust) extracted from its pageflip completion event.
      
      2. All other crtc's, which also page-flip in a multi-display configuration,
         will try to flip with DRM_MODE_PAGE_FLIP_ASYNC, ie. immediately and
         not synchronized to vblank. This allows the PresentPixmap operation
         to complete with little delay compared to a single-display present,
         especially if the different crtc's run at different video refresh
         rates or their refresh cycles are not perfectly synchronized, but
         drift against each other. The downside is potential tearing artifacts
         on all outputs apart from the one of the "reference crtc".
      
      Successfully tested on a AMD gpu with single-display and dual-display
      setups, and with single-X-Screen as well as dual-X-Screen "ZaphodHeads"
      configurations.
      
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      65c12736
  22. Aug 27, 2021
  23. Jul 30, 2021
  24. Apr 27, 2021
  25. Feb 02, 2021
  26. Dec 14, 2020
  27. Aug 28, 2020
  28. Jul 17, 2020
  29. Jul 10, 2020
  30. May 27, 2020
Loading