Hi,
use Vero V / Latest OSMC / Kodi 21.2 "Omega
I’m trying to get an artifact-free display of my local artwork, which is stored directly within each movie folder (e.g., posters at 1000x1500, fanart at 1920x1080). My key finding is that the real-time GPU downscaling is creating severe visual artifacts. I’m aware that a downscale is necessary when, for example, a 1000x1500 pixel cached poster is rendered into a smaller 553x820 skin placeholder. My issue, however, is with the poor image quality that results from this process. This appears to be the known “final scaling algorithm” issue present in Kodi versions prior to v22. —The initial caching process itself, however, works very good for me.
My current workaround is to set <imageres> to a value close to the skin’s display size in an attempt to bypass this real-time scaling.
Is there any way on the OSMC platform to influence the quality or algorithm of this real-time GPU scaler?
Thank You
Hi
I’m not sure this is necessarily a GPU issue.
Can you upload an unedited artwork somewhere and give us some instructions on how to reproduce?
Many thanks
Sam
Thanks Sam, just to clarify: the cached artwork itself (in Thumbnails / texturesxx.db) looks fine – I checked that. The issue only appears at the final rendering stage, when Kodi takes this cached texture and scales it into a skin placeholder. As far as I understand, this rendering result is only created in GPU/memory at runtime (not written to disk), which is why I can’t provide you with a saved file.
My actual question is therefore: can this process – the final rendering/scaling step – be influenced in any way on OSMC? For example, is there a way to improve or adjust the GPU scaler (or whatever renderer process is used at this stage), or could you give a hint on how to achieve better quality here?
AFAIK from looking into this previously there is only user controls over how the cached image is formed but not the real time scaling. The personal testing I’d done in years past showed that the level of degradation in the final image quality was somewhat proportional to how much it had to scale it. By this I mean that if the cached image size set with an advancedsettings.xml file was such that the final on screen pixel dimensions were close to the image size that Kodi cached then the quality would be much higher than if it had to downscale it any significant amount. The larger the cached image dimensions the worse the end result. As different skins and different view modes for media tend to have varying artwork sizes this makes it difficult to give any recommendation on an optimal setting. It does make enough of a difference that OSMC actually does this very thing to optimize the appearance of the OSMC skin using this method. You can see the tweak near the top of every Kodi log where it displays the system level advancedsettings.xml file it loaded.
Also, I recall I had in times past had a go at tweaking the rendering of the cached artwork to see what impact that would have on the suboptimal final stage scaler. My thought was that maybe if I tweaked how aliesed the image was that could lead to better results. I never found any positive results with those test.
Thanks for your detailed explanation – that matches very closely with my own experience.
I also created a separate advancedsettings.xml to adjust how Kodi caches the artwork, tuned to my own requirements/preferences. That definitely helps in the first step (the caching process), and like you described, it reduces degradation if the cached size is close to the final display size.
However, the real problem for me lies in the second step: when Kodi takes the cached image and does the real-time scaling/rendering into the skin placeholder. This issue is particularly noticeable in my setup, as I’m using a modified skin that places a priority on quality fanart and poster presentation. That’s exactly where the visible artifacts appear, and as far as I can tell there seems to be no user control over that process. So the open question remains: is there any way to influence or improve this final rendering/scaling stage, or is it simply a fixed limitation of Kodi/OSMC until changes are made in the rendering pipeline?
I thought I did answer that in my last post. At present, there is no way for a user to change that final rendering.
Got it. So the poor GPU scaling is a hard-coded limitation, which is a major bottleneck. Can this be fixed by the OSMC team?
I don’t remember the details, but if I recall correctly it was something that would require a great deal of effort to change. Whether this is something that will get taken up by the OSMC dev team at some point isn’t something I can speak to.
I read this: “GUI…Improved large texture image quality …” https://kodi.tv/article/kodi-22-piers-alpha-1/ It would be nice if there were some progress in real-time rendering, because even extensive caching of large files through advancedsettings.xml doesn’t really improve the actual visual output in the end.