https://bugs.kde.org/show_bug.cgi?id=409460

            Bug ID: 409460
           Summary: Canvas pan & zoom frame 'spacing' inconsistent
           Product: krita
           Version: 4.2.2
          Platform: MS Windows
                OS: MS Windows
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: OpenGL Canvas
          Assignee: krita-bugs-n...@kde.org
          Reporter: i...@ralek.art
  Target Milestone: ---

Created attachment 121306
  --> https://bugs.kde.org/attachment.cgi?id=121306&action=edit
High speed footage of the rendering issue

SUMMARY
When the canvas is dragged using the pan tool from one side to another at a
constant velocity, it consistently 'skips' every other frame. The 'missing'
frame is not actually missing or dropped, but rather "timed" incorrectly,
producing the effect of a halved FPS.
Hard to explain, much easier to show. I used a high speed camera to capture the
effect because I was curious what made the canvas seem low FPS despite
diagnostics showing 60.



STEPS TO REPRODUCE
1. Open any document, large or small, at any zoom level.
2. Using the pan tool, drag the canvas from one side to the other at a constant
velocity
3. While it may be hard to see with the naked eye, every other frame is
rendered very similarly to the previous frame (but not exactly, it's still an
entirely new frame)

OBSERVED RESULT
If I drag the letter "I" across the canvas, the frames that are rendered look
like this when overlayed on top of each other:
II   II   II   II   II


EXPECTED RESULT
Because I am dragging at a constant velocity, I would expect the distance
between the "I"s (or frames) to be constant, like so:
I  I  I  I  I  I  I  I



ADDITIONAL INFORMATION

-A 1000 FPS capture of the effect I'm seeing is attached, notice the 'plus' is
not evenly distributed among the frames, but rather alternate from 'small jump
-> big jump'

-The same effect happens whether the canvas is accelerated with either OpenGL
or ANGLE, but not with acceleration turned off (though it may just be too low
FPS to notice)

-Setting 'max brush render fps' doesn't affect this as it's unrelated to the
brush rendering itself.

-I was linked this bug: https://bugs.kde.org/show_bug.cgi?id=386620
But I do not believe it is a duplicate, though may be related in some abstract
way

-When I use a mouse to drag the canvas, the effect seems mitigated or even
nonexistent, but instead the canvas occasionally drops several frames each
second randomly. (between 5-10 'missing' frames per 60 rendered)



Krita
  Version: 4.2.2

Qt
  Version (compiled): 5.12.4
  Version (loaded): 5.12.4

OS Information
  Build ABI: x86_64-little_endian-llp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: winnt
  Kernel Version: 10.0.16299
  Pretty Productname: Windows 10 (10.0)
  Product Type: windows
  Product Version: 10


OpenGL Info

  Vendor:  "NVIDIA Corporation" 
  Renderer:  "GeForce GTX 980 Ti/PCIe/SSE2" 
  Version:  "4.6.0 NVIDIA 430.86" 
  Shading language:  "4.60 NVIDIA" 
  Requested format:  QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
  Current format:    QSurfaceFormat(version 4.6, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8,
stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 1, colorSpace QSurfaceFormat::sRGBColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
     Version: 4.6
     Supports deprecated functions true 
     is OpenGL ES: false 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsAngleD3D11: true 
  isQtPreferAngle: false 
== log ==
 Supported renderers: QFlags(0x2|0x4) 
Surface format preference list: 
* QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
    QSurfaceFormat::OpenGL 
* QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
    QSurfaceFormat::OpenGLES 
* QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 16, greenBufferSize 16, blueBufferSize 16, alphaBufferSize 16,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::scRGBColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
    QSurfaceFormat::OpenGL 
* QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::bt2020PQColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
    QSurfaceFormat::OpenGL 
* QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 16, greenBufferSize 16, blueBufferSize 16, alphaBufferSize 16,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::scRGBColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
    QSurfaceFormat::OpenGLES 
* QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::bt2020PQColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
    QSurfaceFormat::OpenGLES 
Probing format... QSurfaceFormat::DefaultColorSpace QSurfaceFormat::OpenGL 
Found format: QSurfaceFormat(version 3.0, options
QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24,
redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8,
stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer,
swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile 
QSurfaceFormat::CompatibilityProfile) 
    QSurfaceFormat::OpenGL 

== end log == 

Hardware Information
 Memory: 63 Gb
 Cores: 12
 Swap: C:/Windows/Temp

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

Reply via email to