1. 22 Sep, 2020 1 commit
    • Aleix Pol Gonzalez's avatar
      Centralize WindowPixmap buffer updating code · 61e655f7
      Aleix Pol Gonzalez authored
      Uses a setter and clear method pattern rather than having the code
      repeated.
      Instead of keeping a QPointer, now we are a QObject and we get notified
      about destruction intention directly, so we can clear the pointer when
      necessary.
      61e655f7
  2. 07 Aug, 2020 2 commits
    • Vlad Zahorodnii's avatar
      Prettify license headers · 4ce853e8
      Vlad Zahorodnii authored
      4ce853e8
    • Vlad Zahorodnii's avatar
      Switch to SPDX license markers · 1fb9f6f1
      Vlad Zahorodnii authored
      The main advantage of SPDX license identifiers over the traditional
      license headers is that it's more difficult to overlook inappropriate
      licenses for kwin, for example GPL 3. We also don't have to copy a
      lot of boilerplate text.
      
      In order to create this change, I ran licensedigger -r -c from the
      toplevel source directory.
      1fb9f6f1
  3. 15 Jul, 2020 1 commit
  4. 14 Jul, 2020 1 commit
  5. 30 Apr, 2020 1 commit
  6. 16 Jan, 2020 1 commit
  7. 14 Nov, 2019 1 commit
    • Roman Gilg's avatar
      Remove vsync detection and configurability · b3a19f9e
      Roman Gilg authored
      Summary:
      Selecting not to vsync does not make sense for an X11 compositor. In the end
      we want clients to be able to present async if they want to but the compositor
      is supposed to send swaps with vsync to the XServer in order to not generate
      tearing artifacts.
      
      There was also a detection logic which did some questionable things in case
      vsync was not available. I don't think this is necessary at all since we can
      just always run a timer to present with or without vsync.
      
      Test Plan: kwin_x11 tested on i915.
      
      Reviewers: #kwin, zzag
      
      Subscribers: zzag, kwin
      
      Tags: #kwin
      
      Maniphest Tasks: T11071
      
      Differential Revision: https://phabricator.kde.org/D23511
      b3a19f9e
  8. 15 Apr, 2019 1 commit
    • Erik Kurzinger's avatar
      [platforms/drm] EGLStream DRM Backend Initial Implementation · c898f96d
      Erik Kurzinger authored
      Summary:
      This is the initial implementation of a DRM backend based on the EGLDevice,
      EGLOutput, and EGLStream extensions, supporting NVIDIA graphics hardware using
      their proprietary driver. The new backend will be used if the environment
      variable KWIN_DRM_USE_EGL_STREAMS is set. On initialization, it will attempt to
      create an EGLDevice based on the DRM device currently in use and create
      EGLOutputs and EGLStreams for any attached displays. These are used to control
      presentation of the final composited frame. Additionally, it will register the
      wl_eglstream_controller Wayland interface so that native EGL windows created by
      clients can be attached to an EGLStream allowing buffer contents to be shared
      with the compositor as a GL texture.
      
      At this time there are two known bugs in the NVIDIA driver's EGL implementation
      affecting desktop functionality. The first can result in tooltip windows drawn
      by plasmashell to contain incorrect contents. The second prevents KWayland from
      being able to query the format of EGLStream-backed buffers which interferes
      with the blur effect. Fixes for both of these are currently in development and
      should appear in an upcoming NVIDIA driver release.
      
      Additionally, hardware cursors are currently not supported with this backend.
      Enabling them causes the desktop to intermittently hang for several seconds.
      This is also likely a bug in the NVIDIA DRM-KMS implementation but the root
      cause is still under investigation.
      
      Test Plan:
      On a system with an NVIDIA graphics card running a recent release of their
      proprietary driver
      
          * Ensure the nvidia_drm kernel module is loaded with the option "modeset=1"
            ("# cat /sys/module/nvidia_drm/parameters/modeset" should print "Y")
          * Ensure EGL external platform support is installed
            https://github.com/NVIDIA/eglexternalplatform
          * Ensure KWin was build with the CMake option
            KWIN_BUILD_EGL_STREAM_BACKEND=ON (this is the default)
          * Start a plasma wayland session with the environment variable
            KWIN_DRM_USE_EGL_STREAMS set
          * Ensure output from KWin OpenGL initialization indicates the NVIDIA EGL
            driver is in use (as opposed to Mesa / llvmpipe).
          * Desktop should be fully functional and perform smoothly.
      
      Reviewers: #kwin, romangg, davidedmundson
      
      Reviewed By: #kwin, romangg, davidedmundson
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D18570
      c898f96d