fTV
Looks pretty lean already. There are just a few small opportunities to improve.
- The gradient for the text on the start menu covers the whole screen. Limiting this to the text would save a huge chunk of overdraw.
- Shadow elements (bordered images) which have no inner filling can signal the GUI engine that the inner portion doesn't have to be drawn (infill="false", see
https://kodi.wiki/view/Skinning_Manual#Image_Control).
- The shadow overlay covering video add-on icons could be reduced in size by omitting the transparent potion.
- In the content view, you can ditch the uniform filtering texture and animate the diffuse color as soon as
https://github.com/xbmc/xbmc/pull/21400 drops.
- Disable visibility of the menu if the info screen is on. (see below)
- The lower gradient in the player OSD features a gradient with ~30% transparent space. This can be reduced.
Amber
Unfortunately it was crashing all the time, due to the scripts hitting Python bugs. But from what I've seen, there is almost no room for improvement.
- The info dialog renders over the previous menu. (see below for the explanation).
- Maybe the shadow behind the posters could be made with an "L" shaped border texture. But this would be an extreme optimization.
- The round indicators have rendering issues at 4k (see below).
General thoughts
For most skins, the info dialog seems to cover the whole screen. Even in those cases, the background elements are still being processed and rendered. It would be very beneficial to set them to being invisible via the <visible> tag. The GUI engine has no way to tell when underlying elements are covered, so everything has to be rendered If there is a reason why this isn't done I'm not aware of, please tell me.
In Nexus, elements which are faded out will be set to invisible automatically (see
https://github.com/xbmc/xbmc/pull/21387 for more details). In case of Estuary, it has reduced the overdraw as far less has to be processed when elements are invisible.
In the future, it will be possible to use grayscale/alpha/grayscale+alpha textures. This will save up to 75% of texture resources depending on the system. See
https://github.com/xbmc/xbmc/pull/21557.
Not a performance issue but a cosmetic one. A lot of RGBA textures feature no "safety" space around them. If rendered in a higher resolution than originally intended (e.g. on a 4k screen), this leaves rendering artifacts on the edges of the element. Especially round buttons are problematic (see
https://github.com/xbmc/xbmc/pull/21549). Ideally, the textures would feature a one pixel wide safe zone around them.
Some takeaways for me
- Background color could be animated to facilitate dimming.
- Have fallback textures and colors as a skin feature.