https://bugs.kde.org/show_bug.cgi?id=412342
            Bug ID: 412342
           Summary: Effects interface: windowDamaged() call sometimes
                    missing on AMD
           Product: kwin
           Version: 5.16.5
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: kwin-bugs-n...@kde.org
          Reporter: haagch.christ...@googlemail.com
  Target Milestone: ---

So far it is tested on a Vega 64 on X11 with recent mesa master, and this is
where this issue happens for me.

On my nvidia machine with Ubuntu 19.04 this issue does not happen.

We have an effect plugin (xrdesktop) that makes use of window textures in
drawWindow(), and for performance reasons we only want to process textures when
the window content is updated, i.e. after a windowDamaged() call for this
window.

This works fine usually, but sometimes there is a windowDamaged() call missing
even though the window renders at 60 fps on a 60 Hz display.


STEPS TO REPRODUCE

I wrote a minimal effects plugin for testing this:
https://github.com/ChristophHaag/kwin-effect-test-damage
No dependencies and the plugin is enabled by default, just cmake ..; make; make
install
The output happens with qDebug(), and the default window it watches for is
glxgears, so run

GALLIUM_HUD=frametime glxgears
and
QT_PLUGIN_PATH=/usr/local/lib/plugins/ TEST_DAMAGE_VERBOSE=TRUE kwin_x11
--replace


OBSERVED RESULT

The plugin prints the durations between windowDamaged() calls for glxgears, and
an extra message when there are two drawWindow() calls where no windowDamaged()
call happens in between.
On my 60 Hz monitor the time between two windowDamaged() calls is usually
~16.67ms, but sometimes one windowDamaged() call is omitted:

damaged(): 16.6673 ms since last damage
damaged(): 16.6368 ms since last damage
damaged(): 16.6442 ms since last damage
damaged(): 16.775 ms since last damage
drawWindow(): Drawing window "glxgears" without previous damaged event!
drawWindow(): 34.7693 ms since last damage
damaged(): 35.1921 ms since last damage
damaged(): 31.3251 ms since last damage
damaged(): 16.5497 ms since last damage
damaged(): 17.5127 ms since last damage
damaged(): 15.8502 ms since last damage

I do believe that this drawWindow() call that had no preceding windowDamaged()
call, actually draws a window with updated content, but I have not really dug
into this issue yet.


SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Archlinux
(available in About System)
KDE Plasma Version: 5.16.5
KDE Frameworks Version: 5.62.0
Qt Version: 5.13.1

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to