Posts: 3,532
Joined: Oct 2013
Reputation:
357
2018-02-27, 11:03
(This post was last modified: 2018-02-27, 12:17 by sualfred.)
FYI:
I faced a lot of speed penalties in LE yesterday (with my Embuary skin) and I was able to reproduce on my office PC (Windows + Intel iGPU).
My skin has a lot of visible ListItem labels at the same time. I've noticed that removing them will increase the performance up to 50%. And one main GPU eater is the defined <shadowcolor> of the labels. Without a shadow color I get up to 10 (idle) better and up to 10-20 minium fps while scrolling.
I use a lot of diffuse and colordiffuse in my skin and none of it causes the same slowdown as the labels/shadowcolor.
My desktop machine (8700k + nvidia 1080 GTX) has no problems. Just the iGPU of my office laptop and my HTPC i3 Skylake NUC.
Edit:
Disabling the dirty regions rendering with <algorithmdirtyregions>0</algorithmdirtyregions> also helps in my case. Much less stuttering but the amount of ListItem labels still causeing a frame drop of 5-10fps while idling. But <shadowcolor> isn't as much as expensive anymore.
Main: Lancool II Mesh - Ryzen 9 5900x - MSI x570 Unify - Zotac RTX 3080 AMP HOLO - 32GB Trident Z Neo 3600 CL16 - EVO 960 M.2 250GB / EVO 940 250GB / MX100 512GB / Crucial P1 2TB / WD Blue 3D Nand 2TB
Sound: Saxx AS30 DSP - Beyer Dynamic Custom One Pro
TV: Nvidia Shield 2019 Pro- Adalight 114x LEDs - Sony 65XG9505 - Kodi / Emby - Yamaha RX-V683 - Heco Victa 700/101/251a + Dynavoice Magic FX-4
Server: i3 Skylake - 8GB - OMV4 - 22TB Storage
Posts: 7,806
Joined: Feb 2013
Reputation:
1,486
2018-03-01, 14:19
(This post was last modified: 2018-03-01, 14:20 by jurialmunkey.)
I used diffuses for rounded corners pretty much everywhere in Arctic:Zephyr and it's probably one of the fastest skins out there. There is a slight cost, but not that much. Focus more on reducing the number of textures, texture resolution, number of controls, amount of animations, complexity of animations, and number of visibility conditions. Anything that auto-scrolls makes the screen re-draw and will cost CPU. Try to avoid String or Integer checks (e.g. String.Contains or Integer.IsGreater) where possible if another boolean can be used instead - e.g. ListItem.IsParentFolder is probably going to be faster than String.Contains(ListItem.Label,..) because the former is just a true/false flag, whilst the latter has to constantly check the string to see if it contains the label.
The big thing I've noticed is that visible conditions are quite costly, so you want to reduce them as much as you can through a combination of variables and conditional includes.
Don't use multiple label/image controls with visible conditions if a variable will work instead.
If a control (or group of controls) is only visible in certain windows, use a conditional include instead of a visible condition.
Try to minimise the total number of viewtypes available because each additional viewtype is another chunk of code which is loaded into memory and having its visible condition checked every frame. The resource cost really starts adding up surprisingly quickly. If a particular viewtype is only used in MyVideoNav, then make sure you aren't also including it in MyMusicNav. I just did a clean-up of viewtypes in Aura, and moving each view into its own individual include made a massive difference in resource cost (previously I had all the views in one big include).