-
Notifications
You must be signed in to change notification settings - Fork 15
-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Printer control via touch interface #18
Comments
I created a test build for klipperscreen: https://github.com/xblax/flashforge_adm5_klipper_mod/releases/tag/v00.01-alpha-klipperscreen-test for those interested, only the chroot environment is provided. Read the notes please. |
For future reference: it's now also possible to build a guppyscreen variant (pull feature branch) which is far more lightweight than klipperscreen but lacks some functionality. It's WIP. |
For klipperscreen the changes for the next update (v0.5) will be (merge feature branch):
Known issues:
Memory reduction in klipperscreen will be nigh impossible as it will require a rewrite to avoid the massive use of dicts. Good for ease of development, bad for memory they are. To people running large prints I recommend switching to guppyscreen. For guppyscreen changelog see #134 |
@consp: Last time I looked at memory usage it seemed like the X11 process itself might be holding a copy of the framebuffer. |
The new driver has no backing store at all :) It uses 4-6mb, the original did about 8mb max. It's a direct interface to the framebuffer and the g2d interface. I'll have a look if it reserves a shadow buffer or not but it's not enabled afaik. Btw: the reason for not merging is the changes to the build system, haven't tried them yet, job for another day. Current usage after running for about two hours (no printing):
I compiled it with every "fast" and memory lean option I know of (including unsafe math) since it will only result in artifacts and the software renderer of glx will redraw anyway. The main improvement will be the fast buffer switching with g2d which takes no added memory (ok, about 1kb for internal structures, but not MBs). If you start xeyes you can see the 'bugs' (eyes draw over, not update background) which are not present when using glx so for our case it's fine. Funny thing is I thought the driver was broken until someone forked it and did some minor updatew I already did but never pushed. Then I realized it simply needed a "Screen" section in xorg.conf to get it working ... |
Yes, refactoring the complete python code does not make much sense. I've also looked into two "easy" optimizations regarding KlipperScreen, I also pushed them to the buildsystem branch. Maybe you can take a look.
I think another way to save a bit more RAM would be to convert the SVGs to PNG in the first place. |
Good 'easy' spots!
That would definitely be a worthwhile thing to do. SVG's is nice but doesn't make sense on an embedded system. At least guppyscreen uses byte encoded images, that's the leanest way to do it since every compression or image lib would probably take more space than the images themselves.
Ah, the "I changed two characters in the code but learned a lot" journey. My record is two weeks of work for swapping two lines of code so a week per line! |
Just tested it with existing installation (note, also some memory checking module included so don't look at the footprint only the difference). original svg and librsvg
96dpi png
So some savings, don't see lot of difference visually Python data is about 12MB in total (strings, dicts, gtk objects etc). I'm going to make a new build with your improvements and check the total difference. Boot to initial screen
|
Discussed in #12
Adding this issue as a place-holder for future integration of a touch-screen UI solution using the ADM5 built-in screen. Options discussed are currently:
All discussion around that topic should continue here, until the road map for this feature becomes more clear.
The text was updated successfully, but these errors were encountered: