From f9d649dec26cb85a1ee707e6d627f0fb7e9e0ae8 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 19 Jun 2019 23:49:00 +0200 Subject: [PATCH 1/6] kodi: update to 18.3-Leia Signed-off-by: Matthias Reichl --- packages/mediacenter/kodi/package.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index 952aba43ff..b8e379121a 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -13,20 +13,20 @@ PKG_PATCH_DIRS="$KODI_VENDOR" case $KODI_VENDOR in raspberrypi) - PKG_VERSION="newclock5_18.2rc1-Leia" - PKG_SHA256="05ed821ae667b93876279fa556405976b854763c9859a3fed2c6eeb1ad51d915" + PKG_VERSION="newclock5_18.3-Leia" + PKG_SHA256="7e7a89a66a1921b0fa32478277d11361b3c7a04aea88784bac668b300b182298" PKG_URL="https://github.com/popcornmix/xbmc/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" ;; rockchip) - PKG_VERSION="rockchip_18.2rc1-Leia" - PKG_SHA256="e3275c17164f120d8b66bab5e8d62d3e5215af5e88c7bea3e391ac560e6a3e28" + PKG_VERSION="rockchip_18.3-Leia" + PKG_SHA256="a9eb3f44b0c7ab409604a2de0c3469f88b20c5d4a69209c006ca4a61673db318" PKG_URL="https://github.com/kwiboo/xbmc/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" ;; *) - PKG_VERSION="18.2rc1-Leia" - PKG_SHA256="da9f4b9be427031665ac736319aa60d4463b9cb8b27daf35c11d91fb16761422" + PKG_VERSION="18.3-Leia" + PKG_SHA256="4f265901c00f582beb8d6ad96c9c303e5ab82611e828c7121ae822b07c0915cc" PKG_URL="https://github.com/xbmc/xbmc/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$PKG_VERSION.tar.gz" ;; From 17623cfeff079aa272b7b9f28fda85b641597bac Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Sat, 15 Jun 2019 16:49:52 +0100 Subject: [PATCH 2/6] binary-addons: bump to latest Leia --- packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk | 4 ++-- .../mediacenter/kodi-binary-addons/pvr.iptvsimple/package.mk | 4 ++-- .../kodi-binary-addons/pvr.mediaportal.tvserver/package.mk | 4 ++-- .../kodi-binary-addons/pvr.sledovanitv.cz/package.mk | 4 ++-- packages/mediacenter/kodi-binary-addons/pvr.vuplus/package.mk | 4 ++-- packages/mediacenter/kodi-binary-addons/pvr.zattoo/package.mk | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk index f86b2b21eb..95808b08dc 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pvr.hts" -PKG_VERSION="4.4.17-Leia" -PKG_SHA256="9036f32396d17c06b820cc4c04381c6270abad9486c14c6fde429480de4674b1" +PKG_VERSION="4.4.18-Leia" +PKG_SHA256="1a5ee260f0e9ca597376ca6d9014c922116a3739e1bbf53ce7de7a715b2aecfe" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.iptvsimple/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.iptvsimple/package.mk index 39245974cc..00532cb8dd 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.iptvsimple/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.iptvsimple/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pvr.iptvsimple" -PKG_VERSION="3.5.7-Leia" -PKG_SHA256="eb1a72baaf5d0a6766214eb452c8e8635ac1d917ac621a76b70d0138c63b9341" +PKG_VERSION="3.5.8-Leia" +PKG_SHA256="84e985b5b31044352eaf54914c266a1775f6b7c32a6ce6a46001ddb7d1f9d7fa" PKG_REV="3" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.mediaportal.tvserver/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.mediaportal.tvserver/package.mk index 544ba50fc3..1390e2787a 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.mediaportal.tvserver/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.mediaportal.tvserver/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pvr.mediaportal.tvserver" -PKG_VERSION="3.5.17-Leia" -PKG_SHA256="30a65feecd7dba8524e058e99def458933ce1ad7ff5d5215fb8baa214d542bc2" +PKG_VERSION="3.5.18-Leia" +PKG_SHA256="9c05578566f7448dc3a7677587c804596aa314afd493cb9c62cc65ea883645aa" PKG_REV="3" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.sledovanitv.cz/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.sledovanitv.cz/package.mk index c568f1c2b2..34982adac2 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.sledovanitv.cz/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.sledovanitv.cz/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pvr.sledovanitv.cz" -PKG_VERSION="1.4.9-Leia" -PKG_SHA256="e3af803c2b69a3e5a1658c8d766fcbb882d6071be6a7acde9ffca317200783c1" +PKG_VERSION="1.5.0-Leia" +PKG_SHA256="6089a7b800e0338160363415a13dff8ea3d0c5c956897b2ae8ccfad7800ea176" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.vuplus/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.vuplus/package.mk index f9a1614561..0e6e24bec2 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.vuplus/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.vuplus/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pvr.vuplus" -PKG_VERSION="3.22.0-Leia" -PKG_SHA256="71acd4b2c99a351a2ae5fbb3547fa4248bb98779475ec0369421cb90ce41076b" +PKG_VERSION="3.25.0-Leia" +PKG_SHA256="030d1ed942e0baa651538ce0a07f55a05559a1fc6564d0a90f3fcd48cbc2f75d" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.zattoo/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.zattoo/package.mk index 23b7886180..63c2e9d1cb 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.zattoo/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.zattoo/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pvr.zattoo" -PKG_VERSION="18.1.0-Leia" -PKG_SHA256="acea12b9a22e85316e7926cab0feb563623d19e0994feb798eb474434de49a63" +PKG_VERSION="18.1.3-Leia" +PKG_SHA256="1474dd13c8f4f437e198284b70db2dc46fb9e2de646b6799ffd36827639df67a" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" From ed873c646d6d2ef48b296e5262755404066978c4 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Thu, 20 Jun 2019 10:54:19 +0200 Subject: [PATCH 3/6] Allwinner: drop kodi sw format check patch Signed-off-by: Matthias Reichl --- .../kodi/0001-Remove-check-for-sw-format.patch | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 projects/Allwinner/patches/kodi/0001-Remove-check-for-sw-format.patch diff --git a/projects/Allwinner/patches/kodi/0001-Remove-check-for-sw-format.patch b/projects/Allwinner/patches/kodi/0001-Remove-check-for-sw-format.patch deleted file mode 100644 index f52879752d..0000000000 --- a/projects/Allwinner/patches/kodi/0001-Remove-check-for-sw-format.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -index 3b0d0d832d..221f48f061 100644 ---- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -@@ -243,12 +362,6 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio - return false; - } - -- if (m_pCodecContext->pix_fmt != AV_PIX_FMT_DRM_PRIME) -- { -- CLog::Log(LOGNOTICE, "CDVDVideoCodecDRMPRIME::%s - unexpected pix fmt %s", __FUNCTION__, av_get_pix_fmt_name(m_pCodecContext->pix_fmt)); -- avcodec_free_context(&m_pCodecContext); -- return false; -- } - - const char* pixFmtName = av_get_pix_fmt_name(m_pCodecContext->pix_fmt); - m_processInfo.SetVideoPixelFormat(pixFmtName ? pixFmtName : ""); - From e60e3068617466755099878ee0bf97a0703930a2 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 22 Jun 2019 17:26:10 +0000 Subject: [PATCH 4/6] kodi (Rockchip): update to kodi-rockchip_18.3-Leia-v2 --- packages/mediacenter/kodi/package.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index b8e379121a..6c441d629e 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -19,8 +19,8 @@ case $KODI_VENDOR in PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" ;; rockchip) - PKG_VERSION="rockchip_18.3-Leia" - PKG_SHA256="a9eb3f44b0c7ab409604a2de0c3469f88b20c5d4a69209c006ca4a61673db318" + PKG_VERSION="rockchip_18.3-Leia-v2" + PKG_SHA256="dfce13129aa8381a4e06cd6c0f597c6212f4230184723edf802d06ea20d5509b" PKG_URL="https://github.com/kwiboo/xbmc/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" ;; From 53dfee381409bd3dfe640a8376794fca359060d2 Mon Sep 17 00:00:00 2001 From: 5schatten Date: Mon, 1 Jul 2019 22:07:12 +0200 Subject: [PATCH 5/6] Amlogic/Kodi: updated patches for K18.3 --- .../Amlogic/patches/kodi/kodi-PR16313.patch | 72 +++++++++++++++++++ ...etto.patch => kodi-drmprime-seeking.patch} | 34 ++++----- 2 files changed, 85 insertions(+), 21 deletions(-) create mode 100644 projects/Amlogic/patches/kodi/kodi-PR16313.patch rename projects/Amlogic/patches/kodi/{kodi-drmprime-ghetto.patch => kodi-drmprime-seeking.patch} (60%) diff --git a/projects/Amlogic/patches/kodi/kodi-PR16313.patch b/projects/Amlogic/patches/kodi/kodi-PR16313.patch new file mode 100644 index 0000000000..75d6e5bd37 --- /dev/null +++ b/projects/Amlogic/patches/kodi/kodi-PR16313.patch @@ -0,0 +1,72 @@ +From 9da95fb8a3c57fd7b8963f561a05d836edc2b601 Mon Sep 17 00:00:00 2001 +From: Stefan Sichler +Date: Thu, 27 Jun 2019 09:07:12 +0200 +Subject: [PATCH] LinuxRendererGLES: fixed memory leak, fixed segfault when + NV12 textures are in use, when (stride != width*bps) and GL_UNPACK_ROW_LENGTH + is not available + +--- + .../VideoRenderers/LinuxRendererGLES.cpp | 17 +++++++++++------ + .../VideoRenderers/LinuxRendererGLES.h | 1 + + 2 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp +index 39e3866face4..c524a2ff6970 100644 +--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp ++++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp +@@ -289,11 +289,18 @@ void CLinuxRendererGLES::LoadPlane(CYuvPlane& plane, int type, + } + else + { ++ size_t planeSize = width * height * bps; ++ if (m_planeBufferSize < planeSize) ++ { ++ m_planeBuffer = static_cast(realloc(m_planeBuffer, planeSize)); ++ m_planeBufferSize = planeSize; ++ } ++ + unsigned char *src(static_cast(data)), + *dst(m_planeBuffer); + +- for (unsigned int y = 0; y < height; ++y, src += stride, dst += width * bpp) +- memcpy(dst, src, width * bpp); ++ for (unsigned int y = 0; y < height; ++y, src += stride, dst += width * bps) ++ memcpy(dst, src, width * bps); + + pixelData = m_planeBuffer; + } +@@ -1292,11 +1299,9 @@ bool CLinuxRendererGLES::CreateYV12Texture(int index) + im.planesize[1] = im.stride[1] * (im.height >> im.cshift_y); + im.planesize[2] = im.stride[2] * (im.height >> im.cshift_y); + +- m_planeBuffer = static_cast(realloc(m_planeBuffer, m_sourceHeight * m_sourceWidth * im.bpp)); +- + for (int i = 0; i < 3; i++) + { +- im.plane[i] = new uint8_t[im.planesize[i]]; ++ im.plane[i] = nullptr; // will be set in UploadTexture() + } + + for(int f = 0; f < MAX_FIELDS; f++) +@@ -1459,7 +1464,7 @@ bool CLinuxRendererGLES::CreateNV12Texture(int index) + + for (int i = 0; i < 2; i++) + { +- im.plane[i] = new uint8_t[im.planesize[i]]; ++ im.plane[i] = nullptr; // will be set in UploadTexture() + } + + for(int f = 0; f < MAX_FIELDS; f++) +diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h +index b0f53705d20e..ecb4a9f8c72c 100644 +--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h ++++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h +@@ -203,6 +203,7 @@ class CLinuxRendererGLES : public CBaseRenderer + AVColorPrimaries m_srcPrimaries; + bool m_toneMap = false; + unsigned char* m_planeBuffer = nullptr; ++ size_t m_planeBufferSize = 0; + + // clear colour for "black" bars + float m_clearColour{0.0f}; + diff --git a/projects/Amlogic/patches/kodi/kodi-drmprime-ghetto.patch b/projects/Amlogic/patches/kodi/kodi-drmprime-seeking.patch similarity index 60% rename from projects/Amlogic/patches/kodi/kodi-drmprime-ghetto.patch rename to projects/Amlogic/patches/kodi/kodi-drmprime-seeking.patch index 1b6a8fc485..bf58d241e0 100644 --- a/projects/Amlogic/patches/kodi/kodi-drmprime-ghetto.patch +++ b/projects/Amlogic/patches/kodi/kodi-drmprime-seeking.patch @@ -1,9 +1,7 @@ -diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -index e04c3c6ff6..dcf97af4ef 100644 ---- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -@@ -156,7 +156,7 @@ void CVideoBufferPoolDRMPRIME::Return(int id) - //------------------------------------------------------------------------------ +--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp 2019-06-14 04:29:43.569698373 +0000 ++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp 2019-06-14 04:33:21.357709602 +0000 +@@ -26,7 +26,7 @@ extern "C" { + using namespace KODI::WINDOWING::GBM; CDVDVideoCodecDRMPRIME::CDVDVideoCodecDRMPRIME(CProcessInfo& processInfo) - : CDVDVideoCodec(processInfo) @@ -11,7 +9,7 @@ index e04c3c6ff6..dcf97af4ef 100644 { m_pFrame = av_frame_alloc(); m_videoBufferPool = std::make_shared(); -@@ -406,6 +406,20 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo +@@ -281,6 +281,20 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecD return VC_ERROR; } @@ -32,21 +30,17 @@ index e04c3c6ff6..dcf97af4ef 100644 if (pVideoPicture->videoBuffer) pVideoPicture->videoBuffer->Release(); pVideoPicture->videoBuffer = nullptr; -diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h -index ffcdf1a7b6..4455280e38 100644 ---- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h -+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h -@@ -79,4 +79,6 @@ protected: +--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h 2019-06-14 04:35:37.981723614 +0000 ++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h 2019-06-14 04:35:30.437722730 +0000 +@@ -42,4 +42,6 @@ protected: AVCodecContext* m_pCodecContext = nullptr; AVFrame* m_pFrame = nullptr; - std::shared_ptr m_videoBufferPool; + std::shared_ptr m_videoBufferPool; + int64_t m_prevTime; + bool m_seeking; }; -diff --git a/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp b/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp -index e8d9023a9f..4299894c00 100644 ---- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp -+++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp +--- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp 2019-04-13 17:57:10.000000000 +0000 ++++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp 2019-06-14 04:37:34.214037038 +0000 @@ -635,6 +635,13 @@ bool CProcessInfo::GetVideoRender() return m_renderVideoLayer; } @@ -61,10 +55,8 @@ index e8d9023a9f..4299894c00 100644 void CProcessInfo::SetPlayTimes(time_t start, int64_t current, int64_t min, int64_t max) { CSingleLock lock(m_stateSection); -diff --git a/xbmc/cores/VideoPlayer/Process/ProcessInfo.h b/xbmc/cores/VideoPlayer/Process/ProcessInfo.h -index e8042c2bc2..5b4aea9b9d 100644 ---- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.h -+++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.h +--- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.h 2019-04-13 17:57:10.000000000 +0000 ++++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.h 2019-06-14 04:38:50.698426382 +0000 @@ -101,6 +101,7 @@ public: bool GetGuiRender(); void SetVideoRender(bool video); From 2681c7259ec975198783ca1b966b9c82bc0fffb3 Mon Sep 17 00:00:00 2001 From: 5schatten Date: Sun, 30 Jun 2019 20:16:14 +0200 Subject: [PATCH 6/6] Amlogic/kodi: drop Amlogic patches merged to upstream --- .../Amlogic/patches/kodi/kodi-PR15922.patch | 39 -- .../Amlogic/patches/kodi/kodi-PR15928.patch | 383 ------------------ .../Amlogic/patches/kodi/kodi-PR15946.patch | 65 --- .../patches/kodi/kodi-front-buffer-lock.patch | 36 -- 4 files changed, 523 deletions(-) delete mode 100644 projects/Amlogic/patches/kodi/kodi-PR15922.patch delete mode 100644 projects/Amlogic/patches/kodi/kodi-PR15928.patch delete mode 100644 projects/Amlogic/patches/kodi/kodi-PR15946.patch delete mode 100644 projects/Amlogic/patches/kodi/kodi-front-buffer-lock.patch diff --git a/projects/Amlogic/patches/kodi/kodi-PR15922.patch b/projects/Amlogic/patches/kodi/kodi-PR15922.patch deleted file mode 100644 index 577fb772e1..0000000000 --- a/projects/Amlogic/patches/kodi/kodi-PR15922.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 4d6af620f4d6a6645229dcf3403a397dfb1a8a93 Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Mon, 15 Apr 2019 16:51:09 -0700 -Subject: [PATCH] CDRMUtils: rework modifiers flag selection - ---- - xbmc/windowing/gbm/DRMUtils.cpp | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -diff --git a/xbmc/windowing/gbm/DRMUtils.cpp b/xbmc/windowing/gbm/DRMUtils.cpp -index df46ad4bdc25..8e1ec9d0dcb5 100644 ---- a/xbmc/windowing/gbm/DRMUtils.cpp -+++ b/xbmc/windowing/gbm/DRMUtils.cpp -@@ -109,10 +109,13 @@ drm_fb * CDRMUtils::DrmFbGetFromBo(struct gbm_bo *bo) - memset(offsets, 0, 16); - #endif - -- if (modifiers[0] == DRM_FORMAT_MOD_INVALID) -- modifiers[0] = DRM_FORMAT_MOD_LINEAR; -+ uint32_t flags = 0; - -- CLog::Log(LOGDEBUG, "CDRMUtils::%s - using modifier: %lli", __FUNCTION__, modifiers[0]); -+ if (modifiers[0] && modifiers[0] != DRM_FORMAT_MOD_INVALID) -+ { -+ flags |= DRM_MODE_FB_MODIFIERS; -+ CLog::Log(LOGDEBUG, "CDRMUtils::{} - using modifier: {:#x}", __FUNCTION__, modifiers[0]); -+ } - - auto ret = drmModeAddFB2WithModifiers(m_fd, - width, -@@ -123,7 +126,7 @@ drm_fb * CDRMUtils::DrmFbGetFromBo(struct gbm_bo *bo) - offsets, - modifiers, - &fb->fb_id, -- (modifiers[0] > 0) ? DRM_MODE_FB_MODIFIERS : 0); -+ flags); - - if(ret) - { diff --git a/projects/Amlogic/patches/kodi/kodi-PR15928.patch b/projects/Amlogic/patches/kodi/kodi-PR15928.patch deleted file mode 100644 index e1f374c713..0000000000 --- a/projects/Amlogic/patches/kodi/kodi-PR15928.patch +++ /dev/null @@ -1,383 +0,0 @@ -From af01b284b158891d258b3a2617697b9779af11c5 Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Thu, 7 Mar 2019 15:08:24 -0800 -Subject: [PATCH 1/4] CEGLFence: add class to help with EGL sync objects - ---- - xbmc/utils/CMakeLists.txt | 6 ++-- - xbmc/utils/EGLFence.cpp | 68 +++++++++++++++++++++++++++++++++++++++ - xbmc/utils/EGLFence.h | 32 ++++++++++++++++++ - 3 files changed, 104 insertions(+), 2 deletions(-) - create mode 100644 xbmc/utils/EGLFence.cpp - create mode 100644 xbmc/utils/EGLFence.h - -diff --git a/xbmc/utils/CMakeLists.txt b/xbmc/utils/CMakeLists.txt -index f0ce99014b84..6dbee35a1a60 100644 ---- a/xbmc/utils/CMakeLists.txt -+++ b/xbmc/utils/CMakeLists.txt -@@ -169,8 +169,10 @@ if(XSLT_FOUND) - list(APPEND HEADERS XSLTUtils.h) - endif() - if(EGL_FOUND) -- list(APPEND SOURCES EGLUtils.cpp) -- list(APPEND HEADERS EGLUtils.h) -+ list(APPEND SOURCES EGLUtils.cpp -+ EGLFence.cpp) -+ list(APPEND HEADERS EGLUtils.h -+ EGLFence.h) - endif() - - # The large map trips the clang optimizer -diff --git a/xbmc/utils/EGLFence.cpp b/xbmc/utils/EGLFence.cpp -new file mode 100644 -index 000000000000..55cc45c4282a ---- /dev/null -+++ b/xbmc/utils/EGLFence.cpp -@@ -0,0 +1,68 @@ -+/* -+ * Copyright (C) 2017-2018 Team Kodi -+ * This file is part of Kodi - https://kodi.tv -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ * See LICENSES/README.md for more information. -+ */ -+ -+#include "EGLFence.h" -+ -+#include "EGLUtils.h" -+ -+CEGLFence::CEGLFence(EGLDisplay display) : -+ m_display(display) -+{ -+ m_eglCreateSyncKHR = CEGLUtils::GetRequiredProcAddress("eglCreateSyncKHR"); -+ m_eglDestroySyncKHR = CEGLUtils::GetRequiredProcAddress("eglDestroySyncKHR"); -+ m_eglGetSyncAttribKHR = CEGLUtils::GetRequiredProcAddress("eglGetSyncAttribKHR"); -+} -+ -+bool CEGLFence::CreateFence() -+{ -+ m_fence = m_eglCreateSyncKHR(m_display, EGL_SYNC_FENCE_KHR, nullptr); -+ if (m_fence == EGL_NO_SYNC_KHR) -+ { -+ CEGLUtils::LogError("failed to create egl sync fence"); -+ return false; -+ } -+ -+ return true; -+} -+ -+void CEGLFence::DestroyFence() -+{ -+ if (m_fence == EGL_NO_SYNC_KHR) -+ { -+ return; -+ } -+ -+ if (m_eglDestroySyncKHR(m_display, m_fence) != EGL_TRUE) -+ { -+ CEGLUtils::LogError("failed to destroy egl sync fence"); -+ } -+ -+ m_fence = EGL_NO_SYNC_KHR; -+} -+ -+bool CEGLFence::IsSignaled() -+{ -+ if (m_fence == EGL_NO_SYNC_KHR) -+ { -+ return false; -+ } -+ -+ EGLint status = EGL_UNSIGNALED_KHR; -+ if (m_eglGetSyncAttribKHR(m_display, m_fence, EGL_SYNC_STATUS_KHR, &status) != EGL_TRUE) -+ { -+ CEGLUtils::LogError("failed to query egl sync fence"); -+ return false; -+ } -+ -+ if (status == EGL_SIGNALED_KHR) -+ { -+ return true; -+ } -+ -+ return false; -+} -diff --git a/xbmc/utils/EGLFence.h b/xbmc/utils/EGLFence.h -new file mode 100644 -index 000000000000..eb285ac4260e ---- /dev/null -+++ b/xbmc/utils/EGLFence.h -@@ -0,0 +1,32 @@ -+/* -+ * Copyright (C) 2017-2018 Team Kodi -+ * This file is part of Kodi - https://kodi.tv -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ * See LICENSES/README.md for more information. -+ */ -+ -+#pragma once -+ -+#include -+#include -+ -+class CEGLFence -+{ -+public: -+ explicit CEGLFence(EGLDisplay display); -+ CEGLFence(CEGLFence const& other) = delete; -+ CEGLFence& operator=(CEGLFence const& other) = delete; -+ -+ bool CreateFence(); -+ void DestroyFence(); -+ bool IsSignaled(); -+ -+private: -+ EGLDisplay m_display{nullptr}; -+ EGLSyncKHR m_fence{nullptr}; -+ -+ PFNEGLCREATESYNCKHRPROC m_eglCreateSyncKHR{nullptr}; -+ PFNEGLDESTROYSYNCKHRPROC m_eglDestroySyncKHR{nullptr}; -+ PFNEGLGETSYNCATTRIBKHRPROC m_eglGetSyncAttribKHR{nullptr}; -+}; - -From eebac4f4e456aa3eb174286bf69073b1e740e4a9 Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Thu, 7 Mar 2019 18:43:15 -0800 -Subject: [PATCH 2/4] CRendererDRMPRIMEGLES: use CEGLFence to sync rendering - ---- - .../HwDecRender/RendererDRMPRIMEGLES.cpp | 23 +++++++++++++++++++ - .../HwDecRender/RendererDRMPRIMEGLES.h | 8 +++++++ - 2 files changed, 31 insertions(+) - -diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -index 330823196fbc..5b8d82c2cd2f 100644 ---- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -@@ -10,6 +10,7 @@ - - #include "cores/VideoPlayer/VideoRenderers/RenderFactory.h" - #include "ServiceBroker.h" -+#include "utils/EGLFence.h" - #include "utils/log.h" - #include "windowing/gbm/WinSystemGbmGLESContext.h" - -@@ -43,15 +44,32 @@ bool CRendererDRMPRIMEGLES::Configure(const VideoPicture &picture, float fps, un - for (auto &texture : m_DRMPRIMETextures) - texture.Init(winSystem->GetEGLDisplay()); - -+ for (auto& fence : m_fences) -+ { -+ fence.reset(new CEGLFence(winSystem->GetEGLDisplay())); -+ } -+ - return CLinuxRendererGLES::Configure(picture, fps, orientation); - } - - void CRendererDRMPRIMEGLES::ReleaseBuffer(int index) - { -+ m_fences[index]->DestroyFence(); -+ - m_DRMPRIMETextures[index].Unmap(); - CLinuxRendererGLES::ReleaseBuffer(index); - } - -+bool CRendererDRMPRIMEGLES::NeedBuffer(int index) -+{ -+ if (m_fences[index]->IsSignaled()) -+ { -+ return false; -+ } -+ -+ return true; -+} -+ - bool CRendererDRMPRIMEGLES::CreateTexture(int index) - { - CPictureBuffer &buf = m_buffers[index]; -@@ -188,3 +206,8 @@ bool CRendererDRMPRIMEGLES::RenderHook(int index) - - return true; - } -+ -+void CRendererDRMPRIMEGLES::AfterRenderHook(int index) -+{ -+ m_fences[index]->CreateFence(); -+} -diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h -index f879b6cf5a38..1666f70443ac 100644 ---- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h -+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h -@@ -11,6 +11,11 @@ - #include "cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h" - #include "DRMPRIMEEGL.h" - -+#include -+#include -+ -+class CEGLFence; -+ - class CRendererDRMPRIMEGLES : public CLinuxRendererGLES - { - public: -@@ -24,14 +29,17 @@ class CRendererDRMPRIMEGLES : public CLinuxRendererGLES - // CLinuxRendererGLES overrides - bool Configure(const VideoPicture &picture, float fps, unsigned int orientation) override; - void ReleaseBuffer(int index) override; -+ bool NeedBuffer(int index) override; - - protected: - // CLinuxRendererGLES overrides - bool LoadShadersHook() override; - bool RenderHook(int index) override; -+ void AfterRenderHook(int index) override; - bool UploadTexture(int index) override; - void DeleteTexture(int index) override; - bool CreateTexture(int index) override; - -+ std::array, NUM_BUFFERS> m_fences; - CDRMPRIMETexture m_DRMPRIMETextures[NUM_BUFFERS]; - }; - -From 86d11125437086b290ec380cbe200acd96e76475 Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Mon, 18 Feb 2019 19:18:39 -0800 -Subject: [PATCH 3/4] CRendererDRMPRIMEGLES: update VBO's to be similar to - CLinuxRendererGL - ---- - .../HwDecRender/RendererDRMPRIMEGLES.cpp | 48 ++++++++++++------- - 1 file changed, 32 insertions(+), 16 deletions(-) - -diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -index 5b8d82c2cd2f..1f3176422885 100644 ---- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -@@ -157,28 +157,44 @@ bool CRendererDRMPRIMEGLES::RenderHook(int index) - { - float x, y, z; - float u1, v1; -- } vertex[4]; -+ }; -+ -+ std::array vertex; - - GLint vertLoc = renderSystem->GUIShaderGetPos(); - GLint loc = renderSystem->GUIShaderGetCoord0(); - -- for (unsigned int i = 0; i < 4; i++) -- { -- // Setup vertex position values -- vertex[i].x = m_rotatedDestCoords[i].x; -- vertex[i].y = m_rotatedDestCoords[i].y; -- vertex[i].z = 0.0f; -- } -- -- // Setup texture coordinates -- vertex[0].u1 = vertex[3].u1 = plane.rect.x1; -- vertex[0].v1 = vertex[1].v1 = plane.rect.y1; -- vertex[1].u1 = vertex[2].u1 = plane.rect.x2; -- vertex[2].v1 = vertex[3].v1 = plane.rect.y2; -+ // top left -+ vertex[0].x = m_rotatedDestCoords[0].x; -+ vertex[0].y = m_rotatedDestCoords[0].y; -+ vertex[0].z = 0.0f; -+ vertex[0].u1 = plane.rect.x1; -+ vertex[0].v1 = plane.rect.y1; -+ -+ // top right -+ vertex[1].x = m_rotatedDestCoords[1].x; -+ vertex[1].y = m_rotatedDestCoords[1].y; -+ vertex[1].z = 0.0f; -+ vertex[1].u1 = plane.rect.x2; -+ vertex[1].v1 = plane.rect.y1; -+ -+ // bottom right -+ vertex[2].x = m_rotatedDestCoords[2].x; -+ vertex[2].y = m_rotatedDestCoords[2].y; -+ vertex[2].z = 0.0f; -+ vertex[2].u1 = plane.rect.x2; -+ vertex[2].v1 = plane.rect.y2; -+ -+ // bottom left -+ vertex[3].x = m_rotatedDestCoords[3].x; -+ vertex[3].y = m_rotatedDestCoords[3].y; -+ vertex[3].z = 0.0f; -+ vertex[3].u1 = plane.rect.x1; -+ vertex[3].v1 = plane.rect.y2;; - - glGenBuffers(1, &vertexVBO); - glBindBuffer(GL_ARRAY_BUFFER, vertexVBO); -- glBufferData(GL_ARRAY_BUFFER, sizeof(PackedVertex)*4, &vertex[0], GL_STATIC_DRAW); -+ glBufferData(GL_ARRAY_BUFFER, sizeof(PackedVertex) * vertex.size(), vertex.data(), GL_STATIC_DRAW); - - glVertexAttribPointer(vertLoc, 3, GL_FLOAT, 0, sizeof(PackedVertex), reinterpret_cast(offsetof(PackedVertex, x))); - glVertexAttribPointer(loc, 2, GL_FLOAT, 0, sizeof(PackedVertex), reinterpret_cast(offsetof(PackedVertex, u1))); -@@ -188,7 +204,7 @@ bool CRendererDRMPRIMEGLES::RenderHook(int index) - - glGenBuffers(1, &indexVBO); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexVBO); -- glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLubyte)*4, idx, GL_STATIC_DRAW); -+ glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLubyte) * 4, idx, GL_STATIC_DRAW); - - glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, 0); - - -From 8d4e4760cb92c90b56aa28a9260d364cd40e0245 Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Mon, 18 Feb 2019 19:20:11 -0800 -Subject: [PATCH 4/4] CRendererDRMPRIMEGLES: add override methods for - ERENDERFEATURE and ESCALINGMETHOD - ---- - .../HwDecRender/RendererDRMPRIMEGLES.cpp | 24 +++++++++++++++++++ - .../HwDecRender/RendererDRMPRIMEGLES.h | 3 +++ - 2 files changed, 27 insertions(+) - -diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -index 1f3176422885..ac01d52c10d7 100644 ---- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp -@@ -227,3 +227,27 @@ void CRendererDRMPRIMEGLES::AfterRenderHook(int index) - { - m_fences[index]->CreateFence(); - } -+ -+bool CRendererDRMPRIMEGLES::Supports(ERENDERFEATURE feature) -+{ -+ if (feature == RENDERFEATURE_STRETCH || -+ feature == RENDERFEATURE_ZOOM || -+ feature == RENDERFEATURE_VERTICAL_SHIFT || -+ feature == RENDERFEATURE_PIXEL_RATIO || -+ feature == RENDERFEATURE_ROTATION) -+ { -+ return true; -+ } -+ -+ return false; -+} -+ -+bool CRendererDRMPRIMEGLES::Supports(ESCALINGMETHOD method) -+{ -+ if (method == VS_SCALINGMETHOD_LINEAR) -+ { -+ return true; -+ } -+ -+ return false; -+} -diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h -index 1666f70443ac..4e9ae779daf8 100644 ---- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h -+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h -@@ -31,6 +31,9 @@ class CRendererDRMPRIMEGLES : public CLinuxRendererGLES - void ReleaseBuffer(int index) override; - bool NeedBuffer(int index) override; - -+ bool Supports(ERENDERFEATURE feature) override; -+ bool Supports(ESCALINGMETHOD method) override; -+ - protected: - // CLinuxRendererGLES overrides - bool LoadShadersHook() override; diff --git a/projects/Amlogic/patches/kodi/kodi-PR15946.patch b/projects/Amlogic/patches/kodi/kodi-PR15946.patch deleted file mode 100644 index 127bafb8ef..0000000000 --- a/projects/Amlogic/patches/kodi/kodi-PR15946.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 2104dbd5e263b9f83c0e6cd451a486d6f3046f83 Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Sat, 20 Apr 2019 12:01:19 -0700 -Subject: [PATCH] CDRMUtils: fallback to drmModeAddFB2 if - drmModeAddFB2WithModifiers fails - ---- - xbmc/windowing/gbm/DRMUtils.cpp | 43 +++++++++++++++++++++------------ - 1 file changed, 28 insertions(+), 15 deletions(-) - -diff --git a/xbmc/windowing/gbm/DRMUtils.cpp b/xbmc/windowing/gbm/DRMUtils.cpp -index 8e1ec9d0dcb5..6cae2176296f 100644 ---- a/xbmc/windowing/gbm/DRMUtils.cpp -+++ b/xbmc/windowing/gbm/DRMUtils.cpp -@@ -117,22 +117,35 @@ drm_fb * CDRMUtils::DrmFbGetFromBo(struct gbm_bo *bo) - CLog::Log(LOGDEBUG, "CDRMUtils::{} - using modifier: {:#x}", __FUNCTION__, modifiers[0]); - } - -- auto ret = drmModeAddFB2WithModifiers(m_fd, -- width, -- height, -- fb->format, -- handles, -- strides, -- offsets, -- modifiers, -- &fb->fb_id, -- flags); -+ int ret = drmModeAddFB2WithModifiers(m_fd, -+ width, -+ height, -+ fb->format, -+ handles, -+ strides, -+ offsets, -+ modifiers, -+ &fb->fb_id, -+ flags); -+ -+ if(ret < 0) -+ { -+ ret = drmModeAddFB2(m_fd, -+ width, -+ height, -+ fb->format, -+ handles, -+ strides, -+ offsets, -+ &fb->fb_id, -+ flags); - -- if(ret) -- { -- delete (fb); -- CLog::Log(LOGDEBUG, "CDRMUtils::%s - failed to add framebuffer", __FUNCTION__); -- return nullptr; -+ if (ret < 0) -+ { -+ delete (fb); -+ CLog::Log(LOGDEBUG, "CDRMUtils::{} - failed to add framebuffer: {} ({})", __FUNCTION__, strerror(errno), errno); -+ return nullptr; -+ } - } - - gbm_bo_set_user_data(bo, fb, DrmFbDestroyCallback); diff --git a/projects/Amlogic/patches/kodi/kodi-front-buffer-lock.patch b/projects/Amlogic/patches/kodi/kodi-front-buffer-lock.patch deleted file mode 100644 index 6eafb34858..0000000000 --- a/projects/Amlogic/patches/kodi/kodi-front-buffer-lock.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 1667f2b95424f7c42fbd5b30aaadef53ab76e3ad Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Fri, 12 Apr 2019 22:22:34 -0700 -Subject: [PATCH] CWinSystemGbm: only lock the front buffer if something is - rendered - ---- - xbmc/windowing/gbm/WinSystemGbm.cpp | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/xbmc/windowing/gbm/WinSystemGbm.cpp b/xbmc/windowing/gbm/WinSystemGbm.cpp -index 4a3291a55045..5cee802be2de 100644 ---- a/xbmc/windowing/gbm/WinSystemGbm.cpp -+++ b/xbmc/windowing/gbm/WinSystemGbm.cpp -@@ -207,11 +207,19 @@ void CWinSystemGbm::FlipPage(bool rendered, bool videoLayer) - m_videoLayerBridge->Disable(); - } - -- struct gbm_bo *bo = m_GBM->LockFrontBuffer(); -+ struct gbm_bo *bo = nullptr; -+ -+ if (rendered) -+ { -+ bo = m_GBM->LockFrontBuffer(); -+ } - - m_DRM->FlipPage(bo, rendered, videoLayer); - -- m_GBM->ReleaseBuffer(); -+ if (rendered) -+ { -+ m_GBM->ReleaseBuffer(); -+ } - - if (m_videoLayerBridge && !videoLayer) - {