v22 Changes to the skinning engine for Kodi P*
#1
As for every new version, there have been some changes to the skinning and rendering engine.

Rendering
- GL/GLES: font rendering improved (no more jitter)
- GL/GLES: implemented front to back rendering
- GL/GLES: improved screen clearing behavior at the start of each frame
- GL/GLES: added anisotropic filtering support

General improvements:
- The engine now culls elements which are outside the rendering boundary

New Infolabels:
- System.PVRCount (details)
- ListItem.BackendInstanceName (details)

Please keep this thread clean. It should be an easy overview for skinners who are updating their skin for Kodi.
For discussions / feature requests / bug reports, please find (or create) the appropriate thread in the skin development forum.
Reply
#2
2024-4-21 GL: font rendering improved (no more jitter)

The geometry setup for text strings has been improved. Vertex processing is now being done on the GPU, instead of the CPU. Especially zooming will look smoother. Shadow placement and alignment when rotating will look better.

PR: https://github.com/xbmc/xbmc/pull/24605

2024-4-24 GLES: font rendering improved (no more jitter)

Same as above, but for GLES.
PR: https://github.com/xbmc/xbmc/pull/25033
Reply
#3
2024-4-8 GL/GLES: added anisotropic filtering support

When enabled in the advanced setting, a GPU might apply a better texture filter when viewing an element at a glancing angle. The effect is highly vendor dependent and might introduce a performance degradation.

PR: https://github.com/xbmc/xbmc/pull/24841
Reply
#4
2024-4-20 Cull GUI elements not in scissor bounds

The engine now culls elements which are outside the rendering boundary. For example, text outside of the view frustum (i.e. outside of the active screen area) will be culled before a drawcall is emitted. This saves CPU and GPU resources.

PR: https://github.com/xbmc/xbmc/pull/23022
Reply
#5
2024-4-28 GL/GLES: implemented front to back rendering

Opaque elements are now rendered from front to back, if enabled via an advanced setting. This is saving resources in otherwise overdrawn areas. There should be no visual changes.

PR: https://github.com/xbmc/xbmc/pull/22919


2024-4-28 GL/GLES: improved screen clearing behavior at the start of each frame

The same PR also changes details of the screen clearing behavior at the start of the frame. Please make sure to set a background color, if you don't draw over the whole screen. Otherwise, the content of the background is undefined for performance reasons, and might contain junk.

PR: https://github.com/xbmc/xbmc/pull/22919
Reply
#6
2024-04-29 New InfoLabels to identify multiple PVR Clients

System.PVRCount
- If evaluated as a string or integer returns the count of enabled PVR clients. If evaluated as a Boolean, returns 'true' if the enabled PVR client count is greater than 1. (Boolean option deleted from merged PR)

ListItem.BackendInstanceName - Returns the name of the PVR client instance for the associated list item.
Reply
#7
(2024-04-29, 23:57)scott967 Wrote: 2024-04-29 New InfoLabels to identify multiple PVR Clients

System.PVRCount
- If evaluated as a string or integer returns the count of enabled PVR clients. If evaluated as a Boolean, returns 'true' if the enabled PVR client count is greater than 1. (Boolean option deleted from merged PR)

ListItem.BackendInstanceName - Returns the name of the PVR client instance for the associated list item.
Update: https://github.com/xbmc/xbmc/pull/25159

Renamed: System.PVRCount (int) -> PVR.ClientCount: Number of PVR clients enabled.

Removed: System.PVRCount (string)

Renamed: ListItem.BackendInstanceName (string) -> ListItem.PVRInstanceName
: If selected item is of type PVR (recording, timer, EPG), the name of the instance of the PVR client add-on, as specified by the user in the add-on settings. Empty if the PVR client add-on does not support multiple instances or item is not of type PVR.

Added: ListItem.PVRClientName (string): If selected item is of type PVR (recording, timer, EPG), the name of the PVR client add-on, as specified by the add-on developer. Empty if the item is not of type PVR.
Reply
#8
https://github.com/xbmc/xbmc/pull/25142

Added: ListItem.ChannelLogo (string): The path for the logo of the currently selected radio or TV channel, if available (PVR).

Added: VideoPlayer.ChannelLogo (string): The path for the logo of the currently playing TV channel, if available (PVR).

Added: MusicPlayer.ChannelLogo (string): The path for the logo of the currently playing radio channel, if available (PVR).
Reply
#9
https://github.com/xbmc/xbmc/pull/24096

Added: ListItem.ParentalRatingIcon (string): The path to an icon representing the ListItem.ParentalRatingCode.

Added: ListItem.ParentalRatingSource (string): The source used to determine the ListItem.ParentalRatingCode value.
Reply
#10
https://github.com/xbmc/xbmc/pull/25664

Added: VideoPlayer.ParentalRatingCode (string): Same as the ListItem value, but for the VideoPlayer context.

Added: VideoPlayer.ParentalRatingIcon (string): Same as the ListItem value, but for the VideoPlayer context.

Added: VideoPlayer.ParentalRatingSource (string): Same as the ListItem value, but for the VideoPlayer context.
Reply
#11
I took the liberty and published a Wiki entry to document the changes to the engine (https://kodi.wiki/view/Changes_To_The_Skinning_Engine), as I do find those long threads a bit convoluted. Especially editing posts of others is not viable. Tracking changes in the first post is also cumbersome.

I hope it is OK with you to track our changes over there.
Reply
#12
2024-10-16 New window dialogs for audio / video / subtitles

PR: https://github.com/xbmc/xbmc/pull/25762

Added new infolabel: VideoPlayer.VideoStreamCount
Added new action ID: DialogSelectVideo
Added new action ID: DialogSelectAudio
Added new action ID: DialogSelectSubtitle

Estuary skin changes:
/xml/Includes_DialogSelect.xml: new includes VideoDialogSelectVideoLayout,VideoDialogSelectAudioLayout, VideoDialogSelectSubtitleLayout
/xml/DialogSelect.xml: use of new includes VideoDialogSelectVideoLayout,VideoDialogSelectAudioLayout, VideoDialogSelectSubtitleLayout
/xml/Variables.xml: new variables VideoStreamDialogVideoItemLabelVar, VideoStreamDialogAudioItemLabelVar, VideoStreamDialogSubItemLabelVar

Language changes, on estuary skin:
new ID 31612 "channels"
new ID 31109 "Video streams"
changed 31112 from "Toggle audio stream" to "Audio streams"
changed 31115 from "Toggle subtitle" to "Subtitles streams"

Language changes, on addons/resource.language.en_gb/resources/strings.po:
ID 462 from "Subtitle" to "Subtitle stream"
Dev-Maintainer of InputStream Adaptive add-on, Netflix add-on ▫ Skills Python, C#, VB.NET and a bit of C++
Reply

Logout Mark Read Team Forum Stats Members Help
Changes to the skinning engine for Kodi P*0