I'm used to toggle layer visibility to see the difference between what I add and the underlying image. ~Some...~ most of the time "what I add" is on several layers. So I disable them all at once with a keyboard shortcut `toggle layer visibility` Since a while now (maybe since it got taken into account in undo history) when disabling several layers, I see them being turn off one by one. This really defeats the toggling effect to see the before/after difference. Enough for me to go and group everything I want to toggle at once (in a group layer). So then I need to paint in a layer, select the group, toggle, go back to the layer to paint. Even doing so with keyboard shortcuts, this slows down the work, adds mental overhead and "boilerplate" manipulations... STEPS TO REPRODUCE 1. Create a big canvas like 10k*10k 2. Add something like 5 totally distinguishable layers so you can see the difference while toggeling 3. Select all layers and toggle their visibility at once (I do it with a keyboard shortcut) OBSERVED RESULT Layers disappear one by one. EXPECTED RESULT Layers disappear all at once. Yet, hot (instant) coffee appears on ~my~ the table. Copy pasted from "Report Bug..." Krita Version: 5.2.2 Hidpi: true Sandbox: false Qt Version (compiled): 5.15.7 Version (loaded): 5.15.7 OS Information Build ABI: arm64-little_endian-lp64 Build CPU: arm64 CPU: arm64 Kernel Type: darwin Kernel Version: 23.1.0 Pretty Productname: macOS 14.1 Product Type: osx Product Version: 14.1 Locale Languages: en_FR C locale: C QLocale current: en QLocale system: en QTextCodec for locale: UTF-8 OpenGL Info Vendor: "Apple" Renderer: "Apple M1 Pro" Driver version: "4.1 Metal - 88" Shading language: "4.10" Requested format: QSurfaceFormat(version 4.1, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CoreProfile) Current format: QSurfaceFormat(version 4.1, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 32, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CoreProfile) GL version: 4.1 Supports deprecated functions false Is OpenGL ES: false supportsBufferMapping: true supportsBufferInvalidation: false forceDisableTextureBuffers: false Extensions: GL_ARB_texture_gather GL_APPLE_client_storage GL_ARB_shader_subroutine GL_EXT_texture_compression_s3tc GL_ARB_explicit_attrib_location GL_APPLE_container_object_shareable GL_EXT_debug_marker GL_APPLE_row_bytes GL_ARB_internalformat_query GL_ARB_sample_shading GL_ARB_tessellation_shader GL_APPLE_rgb_422 GL_ARB_separate_shader_objects GL_EXT_texture_sRGB_decode GL_ARB_draw_buffers_blend GL_ARB_blend_func_extended GL_ARB_instanced_arrays GL_ARB_texture_swizzle GL_APPLE_texture_range GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_storage GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_gpu_shader5 GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_ES2_compatibility GL_APPLE_flush_render GL_ARB_occlusion_query2 GL_NV_texture_barrier GL_ARB_draw_indirect GL_ARB_timer_query GL_EXT_debug_label GL_ARB_gpu_shader_fp64 GL_ARB_sampler_objects GL_ARB_shading_language_include GL_ARB_shader_bit_encoding GL_ARB_texture_cube_map_array GL_ARB_texture_rgb10_a2ui GL_ARB_vertex_attrib_64bit GL_EXT_texture_filter_anisotropic GL_ARB_texture_query_lod GL_ARB_viewport_array GL_EXT_framebuffer_multisample_blit_scaled QPA OpenGL Detection Info supportsDesktopGL: true supportsOpenGLES: false isQtPreferOpenGLES: true Detected renderers: (Supported) Apple M1 Pro (4.1 Metal - 88) useBufferInvalidation (config option): false Hardware Information GPU Acceleration: desktop Memory: 32768 Mb Number of Cores: 10 Swap Location: /private/var/folders/f2/hkjj1mk91555bqcv0bd9gtc80000gq/T Built for: arm64+neon Base instruction set: arm64+neon Supported instruction sets: arm64+neon arm32+neon avx512bw avx512dq avx512cd avx512f fma3+avx2 avx2 fma3+avx avx fma4 fma3+sse4.2 sse4.2 sse4.1 ssse3 sse3 sse2 Current Settings Current Swap Location: /private/var/folders/f2/hkjj1mk91555bqcv0bd9gtc80000gq/T Current Swap Location writable: true Undo Enabled: true Undo Stack Limit: 500 Use OpenGL: true Use OpenGL Texture Buffer: false Disable Vector Optimizations: false Disable AVX Optimizations: false Canvas State: OPENGL_SUCCESS Autosave Interval: 120 Use Backup Files: true Number of Backups Kept: 1 Backup File Suffix: ~ Backup Location: Same Folder as the File Backup Location writable: false Resource Location: /Users/Nour.Alkotob/Library/Application Support/krita Use Win8 Pointer Input: false Use RightMiddleTabletButton Workaround: false Levels of Detail Enabled: false Use Zip64: false
Hi. I have duplicated this on Krita 5.2.2 snap on Kubuntu. I do not believe this is a bug, but might be a performance problem. On my system (Ryzen 8600G with 32Gb DDR5 RAM, 1080 monitor) I can hide and show 6 10k x10k layers in under a second using a keyboard shortcut. If I repeat the test with a tiny canvas (i.e. 254 x 240px) then the test is instant. My processor is roughly equivalent performance to an M2 so I would expect you to see the same kind of performance on your M1 Pro, possibly better. Can you please advise how long it takes for your 6 10k layers to show and hide so we can compare? Certainly I do see each layer showing and hiding one at a time, but on my system it is fast enough not to be a problem in my opinion. Thanks Nick
Hi Nick, Definitely not a bug but a perf issue indeed. I must have missed the category (still can't see where it is set up though). I have a few points: - If it can be all toggled at once when in a group layer, maybe it can be even without it? If so, why not improve it as it would mean it's handled in a not optimal way? - 6 10kpx*10kpx layers takes roughly 3 seconds on my machine. (The laptop itself is in good shape and performs very well when I paint or do computing stuff) If I reduce the image to 500*500, things get instant. - I think I remember there are quite some macOS perf issues and artifacts. I believe you will observe it way better on macOS. To name a couple that are still bugging: https://bugs.kde.org/show_bug.cgi?id=434131 and https://bugs.kde.org/show_bug.cgi?id=398689 - Even half a second totally ruins the toggling effect to me. In fact, this really feels long and sluggish when working. Seems our opinions diverge there.
Hi - thanks for taking the time to explain it and give the end-users view. The good thing is this problem is easily reproducible, so if this does need additional investigation then a developer should be able to test it easily. For now I'll set this one back to 'reported' and I'd ask for anyone else who is more familiar with Krita to look at this and help determine whether this should be confirmed in as a bug. Thank Nick