Add more icons to status bar memory thing.
Open, WishlistPublic

Description

Problem:

Users do not know what a ram is, just make huge ass images/animations, are surprised Krita is slow and or Krita crashes due out of memory errors.

Possible solution:

Add more icons to statusbar, much like how blender has a green to red light gradient for the state of the memory consumption. We already have a warning symbol for when Krita starts to swap:

The code for that is determined in kis_statusbar.cc

https://phabricator.kde.org/source/krita/browse/master/libs/ui/kis_statusbar.cc$297

Problems that need solving:

  1. What rules show which icon? Like, the image starting to swap is determined by the amount of ram taken up by 'tiles'(section of the image) being beyond 87.5% of the hard limit for tiles. This is only for a single image, and different from Krita's memory consumption as a whole. Resources, on top of that, are not even taken into account in the memory statistics if IIRC.
  2. How should the icons look? Our warning icon is yellow.
  3. Can we figure out icons that are friendly to color blind people?

Please discuss. The feature itself should be trivial to implement, but we need some good rules first.

Related Objects

woltherav triaged this task as Wishlist priority.
Deevad added a subscriber: Deevad.Jan 17 2019, 4:39 PM

Very good. Thank you for opening this topic. From a user perspective; I'll answer something basic and minimal: a yellow icon (maybe with a orange outline) appears on the bottom (near the memory usage) around 80% of max resources used. The icon might look like a button one can press: a pop-up display a small text explaining basic things about ram and proposing solution: reduce layer stack by merging, split large animation into scenes, etc...

I'm thinking we should have an icon that shows up at 50%, as the current one shows up at 87.5%. Furthermore, I remember an old presentation of this shooter game where they set the healthbar to start warning the player at 50%, because humans aren't very good at judging their resources, and they found players would manage their resource(health) much better when they were warned at 50%.

Another option would be to change the label that shows the current image dimensions / size into a bar, much like the plasma memory reporting widget, and have that go from bright green to dark red to indicate that the memory usage is getting really high.

Secondly, I'm wondering whether Krita might be able to give an indicator in the timeline for when the ram usage might be too high? Like, a 'soft' recommended limit on frames, where artists can still make more frames, but it becomes increasingly less recommended. Like, for example, if we'd assume each frame has unique data on it, how many frames could be possible given the currently available ram? @scottpetrovic, @dkazakov, @jounip do you think this is a possible idea?

woltherav added a comment.EditedFeb 17 2019, 4:29 PM

Regarding the bar, I was thinking something like this(though perhaps should go into red faster). The smaller lighter box at the start is the imagesize compared to the full colored box, which would be the total ram consumption(stats.totalMemorySize) vs total memory limit. Problem: Sometimes the imagesize(stats.imageSize) is larger than the total ram consumption(stats.totalMemorySize), and I don't know why, @dkazakov?

I checked with colorblindness simulation filters, the red and yellow are still very distinguishable, but we might none the less think of something shape based to make it less ambiguous? (EDIT: maybe smilies?) The blue in this case is the theme's highlight color.

Anyway, this will require a new widget, especially if we want to ensure it'll still keep the pop-up button functionality.

rempt added a subscriber: rempt.Feb 18 2019, 2:58 PM

I like the colored bar, but I do think that having an icon with danger sign would also helpful.

woltherav added a comment.EditedFeb 19 2019, 12:11 PM

ok, for the frames stuff, based on this reddit post:
https://www.reddit.com/r/krita/comments/arr8rw/memory_limit_reached_i_cant_save_my_frames/

User has a large animation, and Krita has too little memory to clone and render. We should perhaps prevent the user from making more frames than they can render(or warn them). (Loading more frames than they can render is fine, but not making them) This is also why I am hoping for a soft-limit/warning when we reach such a threshold.