Bug 455947 - Performance issues with touch zoom and rotate and transform tool/selecting
Summary: Performance issues with touch zoom and rotate and transform tool/selecting
Status: RESOLVED WORKSFORME
Alias: None
Product: krita
Classification: Applications
Component: OpenGL Canvas (other bugs)
Version First Reported In: nightly build (please specify the git hash!)
Platform: Microsoft Windows Microsoft Windows
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: triaged
Depends on:
Blocks:
 
Reported: 2022-06-26 10:20 UTC by til.schmitter
Modified: 2025-05-30 12:45 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description til.schmitter 2022-06-26 10:20:21 UTC
SUMMARY
stuttering performance while using touch and rotate with two fingers while transforming something (all transform modes)

STEPS TO REPRODUCE
- draw something
- activate the transform tool or lasso select
- use two fingers to zoom and rotate

OBSERVED RESULT
very inconsistent performance. sometimes i get 120 fps, sometimes less than 10.
using while i paint normally works fine.
this happens regardless of canvas size.

EXPECTED RESULT
around 70 fps.

SOFTWARE/OS VERSIONS
Windows: 10
GPU: AMD Radeon RX 5700XT 
CPU: i7-6700
Tablet: Cintiq pro 13

--------------------------------------------
DETAILED INFO
Krita

 Version: 5.2.0-prealpha (git 0f478fc)
 Installation type: installer / portable package
 Hidpi: true

Qt

  Version (compiled): 5.12.12
  Version (loaded): 5.12.12

OS Information

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

Locale

  Languages: en_US, en_US
  C locale: C
  QLocale current: en
  QLocale system: de
  QTextCodec for locale: UTF-8
  Process ACP: 65001 (UTF-8)
  System locale default ACP: 1252  (ANSI - Lateinisch I)

OpenGL Info
 
  Vendor:  "Google Inc. (AMD)" 
  Renderer:  "ANGLE (AMD, AMD Radeon RX 5700 XT Direct3D11 vs_5_0 ps_5_0, D3D11-30.0.13023.4001)" 
  Version:  "OpenGL ES 3.0.0 (ANGLE 2.1.0 git hash: f2280c0c5f93+krita_qt5.12.12)" 
  Shading language:  "OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0 git hash: f2280c0c5f93+krita_qt5.12.12)" 
  Requested format:  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) 
  Current format:  QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 16, greenBufferSize 16, blueBufferSize 16, alphaBufferSize 16, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QSurfaceFormat::scRGBColorSpace, profile  QSurfaceFormat::NoProfile) 
     Version: 3.0
     Supports deprecated functions false 
     is OpenGL ES: true 
  supportsBufferMapping: true 
  supportsBufferInvalidation: false 
  forceDisableTextureBuffers: true 
  Extensions: 
     "GL_EXT_texture_storage" 
     "GL_OES_compressed_ETC2_sRGB8_texture" 
     "GL_EXT_unpack_subimage" 
     "GL_OES_vertex_array_object" 
     "GL_EXT_debug_label" 
     "GL_EXT_blend_minmax" 
     "GL_CHROMIUM_copy_compressed_texture" 
     "GL_EXT_debug_marker" 
     "GL_EXT_texture_compression_dxt1" 
     "GL_OES_mapbuffer" 
     "GL_EXT_multisampled_render_to_texture" 
     "GL_EXT_robustness" 
     "GL_EXT_texture_norm16" 
     "GL_OVR_multiview2" 
     "GL_EXT_sRGB" 
     "GL_ANGLE_multiview_multisample" 
     "GL_EXT_multi_draw_indirect" 
     "GL_OES_texture_float_linear" 
     "GL_ANGLE_translated_shader_source" 
     "GL_ANGLE_program_cache_control" 
     "GL_OES_texture_half_float" 
     "GL_ANGLE_robust_client_memory" 
     "GL_ANGLE_memory_size" 
     "GL_ANGLE_framebuffer_multisample" 
     "GL_EXT_texture_filter_anisotropic" 
     "GL_OES_EGL_image" 
     "GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture" 
     "GL_OES_compressed_ETC2_RGBA8_texture" 
     "GL_ANGLE_base_vertex_base_instance" 
     "GL_OES_packed_depth_stencil" 
     "GL_ANGLE_texture_usage" 
     "GL_EXT_color_buffer_float" 
     "" 
     "GL_OES_texture_float" 
     "GL_ANGLE_lossy_etc_decode" 
     "GL_ANGLE_framebuffer_blit" 
     "GL_OES_texture_half_float_linear" 
     "GL_ANGLE_depth_texture" 
     "GL_EXT_texture_type_2_10_10_10_REV" 
     "GL_ANGLE_request_extension" 
     "GL_EXT_read_format_bgra" 
     "GL_OES_standard_derivatives" 
     "GL_EXT_disjoint_timer_query" 
     "GL_EXT_draw_buffers_indexed" 
     "GL_EXT_texture_compression_rgtc" 
     "GL_EXT_shader_texture_lod" 
     "GL_EXT_texture_format_BGRA8888" 
     "GL_OVR_multiview" 
     "GL_ANGLE_texture_compression_dxt3" 
     "GL_CHROMIUM_sync_query" 
     "GL_EXT_clip_control" 
     "GL_ANGLE_client_arrays" 
     "GL_ANGLE_copy_texture_3d" 
     "GL_OES_depth24" 
     "GL_OES_element_index_uint" 
     "GL_OES_get_program_binary" 
     "GL_ANGLE_base_vertex_base_instance_shader_builtin" 
     "GL_EXT_EGL_image_external_wrap_modes" 
     "GL_EXT_color_buffer_half_float" 
     "GL_OES_texture_border_clamp" 
     "GL_ANGLE_provoking_vertex" 
     "GL_OES_compressed_EAC_R11_unsigned_texture" 
     "GL_EXT_texture_compression_s3tc_srgb" 
     "GL_OES_fbo_render_mipmap" 
     "GL_ANGLE_texture_compression_dxt5" 
     "GL_CHROMIUM_lose_context" 
     "GL_NV_pack_subimage" 
     "GL_OES_compressed_EAC_R11_signed_texture" 
     "GL_AMD_performance_monitor" 
     "GL_OES_texture_npot" 
     "GL_ANGLE_multi_draw" 
     "GL_OES_compressed_EAC_RG11_unsigned_texture" 
     "GL_ANGLE_instanced_arrays" 
     "GL_OES_EGL_image_external" 
     "GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture" 
     "GL_OES_compressed_ETC2_sRGB8_alpha8_texture" 
     "GL_KHR_parallel_shader_compile" 
     "GL_EXT_blend_func_extended" 
     "GL_NV_framebuffer_blit" 
     "GL_NV_fence" 
     "GL_OES_depth32" 
     "GL_OES_surfaceless_context" 
     "GL_EXT_discard_framebuffer" 
     "GL_EXT_draw_elements_base_vertex" 
     "GL_EXT_texture_compression_bptc" 
     "GL_WEBGL_video_texture" 
     "GL_EXT_instanced_arrays" 
     "GL_OES_draw_buffers_indexed" 
     "GL_OES_texture_stencil8" 
     "GL_OES_rgb8_rgba8" 
     "GL_CHROMIUM_bind_uniform_location" 
     "GL_OES_compressed_ETC2_RGB8_texture" 
     "GL_EXT_occlusion_query_boolean" 
     "GL_ANGLE_get_tex_level_parameter" 
     "GL_NV_EGL_stream_consumer_external" 
     "GL_OES_draw_elements_base_vertex" 
     "GL_ANGLE_texture_multisample" 
     "GL_CHROMIUM_bind_generates_resource" 
     "GL_OES_EGL_image_external_essl3" 
     "GL_OES_compressed_EAC_RG11_signed_texture" 
     "GL_EXT_float_blend" 
     "GL_EXT_draw_buffers" 
     "GL_EXT_map_buffer_range" 
     "GL_KHR_debug" 
     "GL_NV_pixel_buffer_object" 
     "GL_ANGLE_get_serialized_context_string" 
     "GL_EXT_frag_depth" 
     "GL_CHROMIUM_copy_texture" 
     "GL_ANGLE_pack_reverse_row_order" 
     "GL_EXT_texture_rg" 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsAngleD3D11: true 
  isQtPreferAngle: true 

useBufferInvalidation (config option): false


Hardware Information

  GPU Acceleration: auto
  Memory: 24521 Mb
  Number of Cores: 8
  Swap Location: C:/Users/Til/AppData/Local/Temp
  Built for: sse2
  Base instruction set: sse2
  Supported instruction sets: fma3+avx2 avx2 fma3+avx avx fma4 fma3+sse4.2 sse4.2 sse4.1 ssse3 sse3 sse2 

Current Settings

  Current Swap Location: C:/Users/Til/AppData/Local/Temp
  Current Swap Location writable: true
  Undo Enabled: true
  Undo Stack Limit: 200
  Use OpenGL: true
  Use OpenGL Texture Buffer: false
  Disable Vector Optimizations: false
  Disable AVX Optimizations: false
  Canvas State: OPENGL_SUCCESS
  Autosave Interval: 420
  Use Backup Files: false
  Number of Backups Kept: 1
  Backup File Suffix: ~
  Backup Location: Same Folder as the File
  Backup Location writable: false
  Use Win8 Pointer Input: false
  Use RightMiddleTabletButton Workaround: false
  Levels of Detail Enabled: false
  Use Zip64: false


Display Information
Number of screens: 2
	Screen: 0
		Name: \\.\DISPLAY2
		Depth: 32
		Scale: 1
		Position: 0, 0
		Resolution in pixels: 1920x1080
		Manufacturer: 
		Model: 
		Refresh Rate: 60
	Screen: 1
		Name: \\.\DISPLAY1
		Depth: 32
		Scale: 1
		Position: 0, 1080
		Resolution in pixels: 1920x1080
		Manufacturer: 
		Model: 
		Refresh Rate: 59

Current Settings

  Current Swap Location: C:/Users/Til/AppData/Local/Temp
  Current Swap Location writable: true
  Undo Enabled: true
  Undo Stack Limit: 200
  Use OpenGL: true
  Use OpenGL Texture Buffer: false
  Disable Vector Optimizations: false
  Disable AVX Optimizations: false
  Canvas State: OPENGL_SUCCESS
  Autosave Interval: 420
  Use Backup Files: false
  Number of Backups Kept: 1
  Backup File Suffix: ~
  Backup Location: Same Folder as the File
  Backup Location writable: false
  Use Win8 Pointer Input: false
  Use RightMiddleTabletButton Workaround: false
  Levels of Detail Enabled: false
  Use Zip64: false
Comment 1 vanyossi 2022-06-27 02:43:09 UTC
I tried to reproduce it on macOS an couldn't get stuttering rotation, however transform tool can stutter a bit if "Instant preview -> In-Stack preview in Transform Tool" is activated in preferences, this is a wanted feature by a lot of users but comes with some performance hit. Does unchecking this option fixes your issue?

As for the fps count, how are you measuring it?
Comment 2 til.schmitter 2022-06-27 07:06:15 UTC
> however transform tool can stutter a bit if "Instant preview -> In-Stack
> preview in Transform Tool" is activated in preferences, this is a wanted
> feature by a lot of users but comes with some performance hit. Does
> unchecking this option fixes your issue?
this was already disabled and enabling it doesn't change anything either. i looked in task manager and it doesn't seem like it's my PC struggling to keep up since resource usage is normal.

> As for the fps count, how are you measuring it?
performance->advanced->debug logging of opengl framerate.
i know framerate is inconsistent here and that can be normal while idle, but while i zoom and rotate, the fps should be high. the stutter is also noticable without the fps counter.
Comment 3 Bug Janitor Service 2022-06-28 04:36:43 UTC
Thanks for your comment!

Automatically switching the status of this bug to REPORTED so that the KDE team
knows that the bug is ready to get confirmed.

In the future you may also do this yourself when providing needed information.
Comment 4 Halla Rempt 2025-05-30 11:34:25 UTC
I also cannot reproduce this issue, with krita 5.2.9 using the touch screen of my yoga laptop. Everything is pretty smooth. I get a pretty consistent 55 fps. I'm afraid there isn't much more we can do with this report :-(
Comment 5 til.schmitter 2025-05-30 12:45:19 UTC
ok i tested more thoroughly this time and found out it only breaks when using "wacom gestures" on my cintiq pro 13. wacom gestures are bad anyway so i try to keep them off but they turn themselves on automatically every so often. i think this bug is a non-issue though since it's so specific. all my 2 other touch devices worked fine (linux fedora 41/win11 with windows ink)